Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package etcd for openSUSE:Factory checked in at 2023-05-25 23:52:43 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/etcd (Old) and /work/SRC/openSUSE:Factory/.etcd.new.1533 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "etcd" Thu May 25 23:52:43 2023 rev:36 rq:1088994 version:3.5.9 Changes: -------- --- /work/SRC/openSUSE:Factory/etcd/etcd.changes 2023-04-28 16:25:12.830656552 +0200 +++ /work/SRC/openSUSE:Factory/.etcd.new.1533/etcd.changes 2023-05-25 23:52:52.227728542 +0200 @@ -1,0 +2,12 @@ +Thu May 25 08:53:52 UTC 2023 - er...@mailbox.org + +- Update to version 3.5.9: + * version: bump up to 3.5.9 + * Move go version to dedicated .go-version file + * tests: e2e and integration test for timetolive + * etcdserver: protect lease timetilive with auth + * Backport go update to latest patch release 1.19.9. + * Backport centralising go version for actions workflows. + * server: backport 15743, improved description of --initial-cluster-state flag + +------------------------------------------------------------------- Old: ---- etcd-3.5.8.tar.gz New: ---- etcd-3.5.9.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ etcd.spec ++++++ --- /var/tmp/diff_new_pack.A4R2Sz/_old 2023-05-25 23:52:53.115733755 +0200 +++ /var/tmp/diff_new_pack.A4R2Sz/_new 2023-05-25 23:52:53.119733779 +0200 @@ -22,7 +22,7 @@ %define _fillupdir %{_localstatedir}/adm/fillup-templates %endif Name: etcd -Version: 3.5.8 +Version: 3.5.9 Release: 0 Summary: Highly-available key value store for configuration and service discovery License: Apache-2.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.A4R2Sz/_old 2023-05-25 23:52:53.171734084 +0200 +++ /var/tmp/diff_new_pack.A4R2Sz/_new 2023-05-25 23:52:53.171734084 +0200 @@ -3,7 +3,7 @@ <param name="url">https://github.com/etcd-io/etcd.git</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">v3.5.8</param> + <param name="revision">v3.5.9</param> <param name="versionformat">@PARENT_TAG@</param> <param name="changesgenerate">enable</param> <param name="versionrewrite-pattern">v(.*)</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.A4R2Sz/_old 2023-05-25 23:52:53.191734202 +0200 +++ /var/tmp/diff_new_pack.A4R2Sz/_new 2023-05-25 23:52:53.195734225 +0200 @@ -5,6 +5,6 @@ <param name="url">git://github.com/etcd-io/etcd.git</param> <param name="changesrevision">99018a77bea9a9d29962e5169876c64e02739c52</param></service><service name="tar_scm"> <param name="url">https://github.com/etcd-io/etcd.git</param> - <param name="changesrevision">217d183e5a2b2b7e826825f8218b8c4f53590a8f</param></service></servicedata> + <param name="changesrevision">bdbbde998b7ed434b23676530d10dbd601c4a7c0</param></service></servicedata> (No newline at EOF) ++++++ etcd-3.5.8.tar.gz -> etcd-3.5.9.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/etcd-3.5.8/.github/workflows/e2e.yaml new/etcd-3.5.9/.github/workflows/e2e.yaml --- old/etcd-3.5.8/.github/workflows/e2e.yaml 2023-04-13 12:08:47.000000000 +0200 +++ new/etcd-3.5.9/.github/workflows/e2e.yaml 2023-05-11 13:39:43.000000000 +0200 @@ -1,8 +1,11 @@ name: E2E on: [push, pull_request] jobs: + goversion: + uses: ./.github/workflows/go-version.yaml test: runs-on: ubuntu-latest + needs: goversion strategy: fail-fast: true matrix: @@ -13,7 +16,7 @@ - uses: actions/checkout@v2 - uses: actions/setup-go@v2 with: - go-version: "1.19.8" + go-version: ${{ needs.goversion.outputs.goversion }} - run: date - env: TARGET: ${{ matrix.target }} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/etcd-3.5.8/.github/workflows/functional.yaml new/etcd-3.5.9/.github/workflows/functional.yaml --- old/etcd-3.5.8/.github/workflows/functional.yaml 2023-04-13 12:08:47.000000000 +0200 +++ new/etcd-3.5.9/.github/workflows/functional.yaml 2023-05-11 13:39:43.000000000 +0200 @@ -1,8 +1,11 @@ name: functional-tests on: [push, pull_request] jobs: + goversion: + uses: ./.github/workflows/go-version.yaml test: runs-on: ubuntu-latest + needs: goversion strategy: fail-fast: true matrix: @@ -12,7 +15,7 @@ - uses: actions/checkout@v2 - uses: actions/setup-go@v2 with: - go-version: "1.19.8" + go-version: ${{ needs.goversion.outputs.goversion }} - run: date - env: TARGET: ${{ matrix.target }} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/etcd-3.5.8/.github/workflows/go-version.yaml new/etcd-3.5.9/.github/workflows/go-version.yaml --- old/etcd-3.5.8/.github/workflows/go-version.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/etcd-3.5.9/.github/workflows/go-version.yaml 2023-05-11 13:39:43.000000000 +0200 @@ -0,0 +1,21 @@ +name: Go version setup + +on: + workflow_call: + outputs: + goversion: + value: ${{ jobs.version.outputs.goversion }} + +jobs: + version: + name: Set Go version variable for all the workflows + runs-on: ubuntu-latest + outputs: + goversion: ${{ steps.goversion.outputs.goversion }} + steps: + - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 + - id: goversion + run: | + GO_VERSION=$(cat .go-version) + echo "Go Version: $GO_VERSION" + echo "goversion=$GO_VERSION" >> $GITHUB_OUTPUT diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/etcd-3.5.8/.github/workflows/grpcproxy.yaml new/etcd-3.5.9/.github/workflows/grpcproxy.yaml --- old/etcd-3.5.8/.github/workflows/grpcproxy.yaml 2023-04-13 12:08:47.000000000 +0200 +++ new/etcd-3.5.9/.github/workflows/grpcproxy.yaml 2023-05-11 13:39:43.000000000 +0200 @@ -1,8 +1,11 @@ name: grpcProxy-tests on: [push, pull_request] jobs: + goversion: + uses: ./.github/workflows/go-version.yaml test: runs-on: ubuntu-latest + needs: goversion strategy: fail-fast: true matrix: @@ -12,7 +15,7 @@ - uses: actions/checkout@v2 - uses: actions/setup-go@v2 with: - go-version: "1.19.8" + go-version: ${{ needs.goversion.outputs.goversion }} - run: date - env: TARGET: ${{ matrix.target }} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/etcd-3.5.8/.github/workflows/release.yaml new/etcd-3.5.9/.github/workflows/release.yaml --- old/etcd-3.5.8/.github/workflows/release.yaml 2023-04-13 12:08:47.000000000 +0200 +++ new/etcd-3.5.9/.github/workflows/release.yaml 2023-05-11 13:39:43.000000000 +0200 @@ -1,13 +1,16 @@ name: Release on: [push, pull_request] jobs: + goversion: + uses: ./.github/workflows/go-version.yaml main: runs-on: ubuntu-latest + needs: goversion steps: - uses: actions/checkout@v2 - uses: actions/setup-go@v2 with: - go-version: "1.19.8" + go-version: ${{ needs.goversion.outputs.goversion }} - name: release run: | set -euo pipefail diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/etcd-3.5.8/.github/workflows/tests.yaml new/etcd-3.5.9/.github/workflows/tests.yaml --- old/etcd-3.5.8/.github/workflows/tests.yaml 2023-04-13 12:08:47.000000000 +0200 +++ new/etcd-3.5.9/.github/workflows/tests.yaml 2023-05-11 13:39:43.000000000 +0200 @@ -1,8 +1,11 @@ name: Tests on: [push, pull_request] jobs: + goversion: + uses: ./.github/workflows/go-version.yaml test: runs-on: ubuntu-latest + needs: goversion strategy: fail-fast: false matrix: @@ -18,7 +21,7 @@ - uses: actions/checkout@v2 - uses: actions/setup-go@v2 with: - go-version: "1.19.8" + go-version: ${{ needs.goversion.outputs.goversion }} - run: date - env: TARGET: ${{ matrix.target }} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/etcd-3.5.8/.go-version new/etcd-3.5.9/.go-version --- old/etcd-3.5.8/.go-version 1970-01-01 01:00:00.000000000 +0100 +++ new/etcd-3.5.9/.go-version 2023-05-11 13:39:43.000000000 +0200 @@ -0,0 +1 @@ +1.19.9 \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/etcd-3.5.8/Makefile new/etcd-3.5.9/Makefile --- old/etcd-3.5.8/Makefile 2023-04-13 12:08:47.000000000 +0200 +++ new/etcd-3.5.9/Makefile 2023-05-11 13:39:43.000000000 +0200 @@ -55,7 +55,7 @@ -GO_VERSION ?= 1.19.8 +GO_VERSION ?= 1.19.9 ETCD_VERSION ?= $(shell git rev-parse --short HEAD || echo "GitNotFound") TEST_SUFFIX = $(shell date +%s | base64 | head -c 15) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/etcd-3.5.8/api/version/version.go new/etcd-3.5.9/api/version/version.go --- old/etcd-3.5.8/api/version/version.go 2023-04-13 12:08:47.000000000 +0200 +++ new/etcd-3.5.9/api/version/version.go 2023-05-11 13:39:43.000000000 +0200 @@ -26,7 +26,7 @@ var ( // MinClusterVersion is the min cluster version this etcd binary is compatible with. MinClusterVersion = "3.0.0" - Version = "3.5.8" + Version = "3.5.9" APIVersion = "unknown" // Git SHA Value will be set during build diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/etcd-3.5.8/client/v2/go.mod new/etcd-3.5.9/client/v2/go.mod --- old/etcd-3.5.8/client/v2/go.mod 2023-04-13 12:08:47.000000000 +0200 +++ new/etcd-3.5.9/client/v2/go.mod 2023-05-11 13:39:43.000000000 +0200 @@ -5,8 +5,8 @@ require ( github.com/json-iterator/go v1.1.11 github.com/modern-go/reflect2 v1.0.1 - go.etcd.io/etcd/api/v3 v3.5.8 - go.etcd.io/etcd/client/pkg/v3 v3.5.8 + go.etcd.io/etcd/api/v3 v3.5.9 + go.etcd.io/etcd/client/pkg/v3 v3.5.9 ) require ( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/etcd-3.5.8/client/v3/go.mod new/etcd-3.5.9/client/v3/go.mod --- old/etcd-3.5.8/client/v3/go.mod 2023-04-13 12:08:47.000000000 +0200 +++ new/etcd-3.5.9/client/v3/go.mod 2023-05-11 13:39:43.000000000 +0200 @@ -6,8 +6,8 @@ github.com/dustin/go-humanize v1.0.0 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 github.com/prometheus/client_golang v1.11.1 - go.etcd.io/etcd/api/v3 v3.5.8 - go.etcd.io/etcd/client/pkg/v3 v3.5.8 + go.etcd.io/etcd/api/v3 v3.5.9 + go.etcd.io/etcd/client/pkg/v3 v3.5.9 go.uber.org/zap v1.17.0 google.golang.org/grpc v1.41.0 sigs.k8s.io/yaml v1.2.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/etcd-3.5.8/etcdctl/go.mod new/etcd-3.5.9/etcdctl/go.mod --- old/etcd-3.5.8/etcdctl/go.mod 2023-04-13 12:08:47.000000000 +0200 +++ new/etcd-3.5.9/etcdctl/go.mod 2023-05-11 13:39:43.000000000 +0200 @@ -9,12 +9,12 @@ github.com/spf13/cobra v1.1.3 github.com/spf13/pflag v1.0.5 github.com/urfave/cli v1.22.4 - go.etcd.io/etcd/api/v3 v3.5.8 - go.etcd.io/etcd/client/pkg/v3 v3.5.8 - go.etcd.io/etcd/client/v2 v2.305.8 - go.etcd.io/etcd/client/v3 v3.5.8 - go.etcd.io/etcd/etcdutl/v3 v3.5.8 - go.etcd.io/etcd/pkg/v3 v3.5.8 + go.etcd.io/etcd/api/v3 v3.5.9 + go.etcd.io/etcd/client/pkg/v3 v3.5.9 + go.etcd.io/etcd/client/v2 v2.305.9 + go.etcd.io/etcd/client/v3 v3.5.9 + go.etcd.io/etcd/etcdutl/v3 v3.5.9 + go.etcd.io/etcd/pkg/v3 v3.5.9 go.uber.org/zap v1.17.0 golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba google.golang.org/grpc v1.41.0 @@ -46,8 +46,8 @@ github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.etcd.io/bbolt v1.3.7 // indirect - go.etcd.io/etcd/raft/v3 v3.5.8 // indirect - go.etcd.io/etcd/server/v3 v3.5.8 // indirect + go.etcd.io/etcd/raft/v3 v3.5.9 // indirect + go.etcd.io/etcd/server/v3 v3.5.9 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.25.0 // indirect go.opentelemetry.io/otel v1.0.1 // indirect go.opentelemetry.io/otel/trace v1.0.1 // indirect diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/etcd-3.5.8/etcdutl/go.mod new/etcd-3.5.9/etcdutl/go.mod --- old/etcd-3.5.8/etcdutl/go.mod 2023-04-13 12:08:47.000000000 +0200 +++ new/etcd-3.5.9/etcdutl/go.mod 2023-05-11 13:39:43.000000000 +0200 @@ -25,12 +25,12 @@ github.com/olekukonko/tablewriter v0.0.5 github.com/spf13/cobra v1.1.3 go.etcd.io/bbolt v1.3.7 - go.etcd.io/etcd/api/v3 v3.5.8 - go.etcd.io/etcd/client/pkg/v3 v3.5.8 - go.etcd.io/etcd/client/v3 v3.5.8 - go.etcd.io/etcd/pkg/v3 v3.5.8 - go.etcd.io/etcd/raft/v3 v3.5.8 - go.etcd.io/etcd/server/v3 v3.5.8 + go.etcd.io/etcd/api/v3 v3.5.9 + go.etcd.io/etcd/client/pkg/v3 v3.5.9 + go.etcd.io/etcd/client/v3 v3.5.9 + go.etcd.io/etcd/pkg/v3 v3.5.9 + go.etcd.io/etcd/raft/v3 v3.5.9 + go.etcd.io/etcd/server/v3 v3.5.9 go.uber.org/zap v1.17.0 ) @@ -56,7 +56,7 @@ github.com/prometheus/procfs v0.6.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect - go.etcd.io/etcd/client/v2 v2.305.8 // indirect + go.etcd.io/etcd/client/v2 v2.305.9 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.25.0 // indirect go.opentelemetry.io/otel v1.0.1 // indirect go.opentelemetry.io/otel/trace v1.0.1 // indirect diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/etcd-3.5.8/go.mod new/etcd-3.5.9/go.mod --- old/etcd-3.5.8/go.mod 2023-04-13 12:08:47.000000000 +0200 +++ new/etcd-3.5.9/go.mod 2023-05-11 13:39:43.000000000 +0200 @@ -20,16 +20,16 @@ github.com/dustin/go-humanize v1.0.0 github.com/spf13/cobra v1.1.3 go.etcd.io/bbolt v1.3.7 - go.etcd.io/etcd/api/v3 v3.5.8 - go.etcd.io/etcd/client/pkg/v3 v3.5.8 - go.etcd.io/etcd/client/v2 v2.305.8 - go.etcd.io/etcd/client/v3 v3.5.8 - go.etcd.io/etcd/etcdctl/v3 v3.5.8 - go.etcd.io/etcd/etcdutl/v3 v3.5.8 - go.etcd.io/etcd/pkg/v3 v3.5.8 - go.etcd.io/etcd/raft/v3 v3.5.8 - go.etcd.io/etcd/server/v3 v3.5.8 - go.etcd.io/etcd/tests/v3 v3.5.8 + go.etcd.io/etcd/api/v3 v3.5.9 + go.etcd.io/etcd/client/pkg/v3 v3.5.9 + go.etcd.io/etcd/client/v2 v2.305.9 + go.etcd.io/etcd/client/v3 v3.5.9 + go.etcd.io/etcd/etcdctl/v3 v3.5.9 + go.etcd.io/etcd/etcdutl/v3 v3.5.9 + go.etcd.io/etcd/pkg/v3 v3.5.9 + go.etcd.io/etcd/raft/v3 v3.5.9 + go.etcd.io/etcd/server/v3 v3.5.9 + go.etcd.io/etcd/tests/v3 v3.5.9 go.uber.org/zap v1.17.0 golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba google.golang.org/grpc v1.41.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/etcd-3.5.8/pkg/go.mod new/etcd-3.5.9/pkg/go.mod --- old/etcd-3.5.8/pkg/go.mod 2023-04-13 12:08:47.000000000 +0200 +++ new/etcd-3.5.9/pkg/go.mod 2023-05-11 13:39:43.000000000 +0200 @@ -8,7 +8,7 @@ github.com/spf13/cobra v1.1.3 github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.8.1 - go.etcd.io/etcd/client/pkg/v3 v3.5.8 + go.etcd.io/etcd/client/pkg/v3 v3.5.9 go.uber.org/zap v1.17.0 google.golang.org/grpc v1.41.0 ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/etcd-3.5.8/raft/go.mod new/etcd-3.5.9/raft/go.mod --- old/etcd-3.5.8/raft/go.mod 2023-04-13 12:08:47.000000000 +0200 +++ new/etcd-3.5.9/raft/go.mod 2023-05-11 13:39:43.000000000 +0200 @@ -6,7 +6,7 @@ github.com/cockroachdb/datadriven v1.0.2 github.com/gogo/protobuf v1.3.2 github.com/golang/protobuf v1.5.2 - go.etcd.io/etcd/client/pkg/v3 v3.5.8 + go.etcd.io/etcd/client/pkg/v3 v3.5.9 ) require ( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/etcd-3.5.8/scripts/release new/etcd-3.5.9/scripts/release --- old/etcd-3.5.8/scripts/release 2023-04-13 12:08:47.000000000 +0200 +++ new/etcd-3.5.9/scripts/release 2023-05-11 13:39:43.000000000 +0200 @@ -112,10 +112,10 @@ # Check go version. log_callout "Check go version" local go_version current_go_version - go_version="go$(grep go-version .github/workflows/tests.yaml | awk '{print $2}' | tr -d '"')" + go_version="go$(cat .go-version)" current_go_version=$(go version | awk '{ print $3 }') if [[ "${current_go_version}" != "${go_version}" ]]; then - log_error "Current go version is ${current_go_version}, but etcd ${RELEASE_VERSION} requires ${go_version} (see .travis.yml)." + log_error "Current go version is ${current_go_version}, but etcd ${RELEASE_VERSION} requires ${go_version} (see .go-version)." exit 1 fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/etcd-3.5.8/server/etcdmain/config.go new/etcd-3.5.9/server/etcdmain/config.go --- old/etcd-3.5.8/server/etcdmain/config.go 2023-04-13 12:08:47.000000000 +0200 +++ new/etcd-3.5.9/server/etcdmain/config.go 2023-05-11 13:39:43.000000000 +0200 @@ -201,7 +201,7 @@ fs.StringVar(&cfg.ec.DNSClusterServiceName, "discovery-srv-name", cfg.ec.DNSClusterServiceName, "Service name to query when using DNS discovery.") fs.StringVar(&cfg.ec.InitialCluster, "initial-cluster", cfg.ec.InitialCluster, "Initial cluster configuration for bootstrapping.") fs.StringVar(&cfg.ec.InitialClusterToken, "initial-cluster-token", cfg.ec.InitialClusterToken, "Initial cluster token for the etcd cluster during bootstrap.") - fs.Var(cfg.cf.clusterState, "initial-cluster-state", "Initial cluster state ('new' or 'existing').") + fs.Var(cfg.cf.clusterState, "initial-cluster-state", "Initial cluster state ('new' when bootstrapping a new cluster or 'existing' when adding new members to an existing cluster). After successful initialization (bootstrapping or adding), flag is ignored on restarts.") fs.BoolVar(&cfg.ec.StrictReconfigCheck, "strict-reconfig-check", cfg.ec.StrictReconfigCheck, "Reject reconfiguration requests that would cause quorum loss.") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/etcd-3.5.8/server/etcdmain/help.go new/etcd-3.5.9/server/etcdmain/help.go --- old/etcd-3.5.8/server/etcdmain/help.go 2023-04-13 12:08:47.000000000 +0200 +++ new/etcd-3.5.9/server/etcdmain/help.go 2023-05-11 13:39:43.000000000 +0200 @@ -101,7 +101,8 @@ --initial-cluster 'default=http://localhost:2380' Initial cluster configuration for bootstrapping. --initial-cluster-state 'new' - Initial cluster state ('new' or 'existing'). + Initial cluster state ('new' when bootstrapping a new cluster or 'existing' when adding new members to an existing cluster). + After successful initialization (bootstrapping or adding), flag is ignored on restarts. --initial-cluster-token 'etcd-cluster' Initial cluster token for the etcd cluster during bootstrap. Specifying this can protect you from unintended cross-cluster interaction when running multiple clusters. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/etcd-3.5.8/server/etcdserver/v3_server.go new/etcd-3.5.9/server/etcdserver/v3_server.go --- old/etcd-3.5.8/server/etcdserver/v3_server.go 2023-04-13 12:08:47.000000000 +0200 +++ new/etcd-3.5.9/server/etcdserver/v3_server.go 2023-05-11 13:39:43.000000000 +0200 @@ -336,7 +336,32 @@ return -1, ErrCanceled } -func (s *EtcdServer) LeaseTimeToLive(ctx context.Context, r *pb.LeaseTimeToLiveRequest) (*pb.LeaseTimeToLiveResponse, error) { +func (s *EtcdServer) checkLeaseTimeToLive(ctx context.Context, leaseID lease.LeaseID) (uint64, error) { + rev := s.AuthStore().Revision() + if !s.AuthStore().IsAuthEnabled() { + return rev, nil + } + authInfo, err := s.AuthInfoFromCtx(ctx) + if err != nil { + return rev, err + } + if authInfo == nil { + return rev, auth.ErrUserEmpty + } + + l := s.lessor.Lookup(leaseID) + if l != nil { + for _, key := range l.Keys() { + if err := s.AuthStore().IsRangePermitted(authInfo, []byte(key), []byte{}); err != nil { + return 0, err + } + } + } + + return rev, nil +} + +func (s *EtcdServer) leaseTimeToLive(ctx context.Context, r *pb.LeaseTimeToLiveRequest) (*pb.LeaseTimeToLiveResponse, error) { if s.isLeader() { if err := s.waitAppliedIndex(); err != nil { return nil, err @@ -386,6 +411,31 @@ return nil, ErrCanceled } +func (s *EtcdServer) LeaseTimeToLive(ctx context.Context, r *pb.LeaseTimeToLiveRequest) (*pb.LeaseTimeToLiveResponse, error) { + var rev uint64 + var err error + if r.Keys { + // check RBAC permission only if Keys is true + rev, err = s.checkLeaseTimeToLive(ctx, lease.LeaseID(r.ID)) + if err != nil { + return nil, err + } + } + + resp, err := s.leaseTimeToLive(ctx, r) + if err != nil { + return nil, err + } + + if r.Keys { + if s.AuthStore().IsAuthEnabled() && rev != s.AuthStore().Revision() { + return nil, auth.ErrAuthOldRevision + } + } + return resp, nil +} + +// LeaseLeases is really ListLeases !??? func (s *EtcdServer) LeaseLeases(ctx context.Context, r *pb.LeaseLeasesRequest) (*pb.LeaseLeasesResponse, error) { ls := s.lessor.Leases() lss := make([]*pb.LeaseStatus, len(ls)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/etcd-3.5.8/server/go.mod new/etcd-3.5.9/server/go.mod --- old/etcd-3.5.8/server/go.mod 2023-04-13 12:08:47.000000000 +0200 +++ new/etcd-3.5.9/server/go.mod 2023-05-11 13:39:43.000000000 +0200 @@ -23,12 +23,12 @@ 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.3.7 - go.etcd.io/etcd/api/v3 v3.5.8 - go.etcd.io/etcd/client/pkg/v3 v3.5.8 - go.etcd.io/etcd/client/v2 v2.305.8 - go.etcd.io/etcd/client/v3 v3.5.8 - go.etcd.io/etcd/pkg/v3 v3.5.8 - go.etcd.io/etcd/raft/v3 v3.5.8 + go.etcd.io/etcd/api/v3 v3.5.9 + go.etcd.io/etcd/client/pkg/v3 v3.5.9 + go.etcd.io/etcd/client/v2 v2.305.9 + go.etcd.io/etcd/client/v3 v3.5.9 + go.etcd.io/etcd/pkg/v3 v3.5.9 + go.etcd.io/etcd/raft/v3 v3.5.9 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.25.0 go.opentelemetry.io/otel v1.0.1 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.0.1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/etcd-3.5.8/tests/e2e/ctl_v3_auth_test.go new/etcd-3.5.9/tests/e2e/ctl_v3_auth_test.go --- old/etcd-3.5.8/tests/e2e/ctl_v3_auth_test.go 2023-04-13 12:08:47.000000000 +0200 +++ new/etcd-3.5.9/tests/e2e/ctl_v3_auth_test.go 2023-05-11 13:39:43.000000000 +0200 @@ -76,6 +76,7 @@ func TestCtlV3AuthJWTExpire(t *testing.T) { testCtl(t, authTestJWTExpire, withCfg(*newConfigJWT())) } func TestCtlV3AuthRevisionConsistency(t *testing.T) { testCtl(t, authTestRevisionConsistency) } func TestCtlV3AuthTestCacheReload(t *testing.T) { testCtl(t, authTestCacheReload) } +func TestCtlV3AuthLeaseTimeToLive(t *testing.T) { testCtl(t, authTestLeaseTimeToLive) } func TestCtlV3AuthRecoverFromSnapshot(t *testing.T) { testCtl(t, authTestRecoverSnapshot, withCfg(*newConfigNoTLS()), withQuorum(), withSnapshotCount(5)) @@ -1509,3 +1510,51 @@ } return retHashKVs, nil } + +func authTestLeaseTimeToLive(cx ctlCtx) { + if err := authEnable(cx); err != nil { + cx.t.Fatal(err) + } + cx.user, cx.pass = "root", "root" + + authSetupTestUser(cx) + + cx.user = "test-user" + cx.pass = "pass" + + leaseID, err := ctlV3LeaseGrant(cx, 10) + if err != nil { + cx.t.Fatal(err) + } + + err = ctlV3Put(cx, "foo", "val", leaseID) + if err != nil { + cx.t.Fatal(err) + } + + err = ctlV3LeaseTimeToLive(cx, leaseID, true) + if err != nil { + cx.t.Fatal(err) + } + + cx.user = "root" + cx.pass = "root" + err = ctlV3Put(cx, "bar", "val", leaseID) + if err != nil { + cx.t.Fatal(err) + } + + cx.user = "test-user" + cx.pass = "pass" + // the lease is attached to bar, which test-user cannot access + err = ctlV3LeaseTimeToLive(cx, leaseID, true) + if err == nil { + cx.t.Fatal("test-user must not be able to access to the lease, because it's attached to the key bar") + } + + // without --keys, access should be allowed + err = ctlV3LeaseTimeToLive(cx, leaseID, false) + if err != nil { + cx.t.Fatal(err) + } +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/etcd-3.5.8/tests/e2e/ctl_v3_lease_test.go new/etcd-3.5.9/tests/e2e/ctl_v3_lease_test.go --- old/etcd-3.5.8/tests/e2e/ctl_v3_lease_test.go 2023-04-13 12:08:47.000000000 +0200 +++ new/etcd-3.5.9/tests/e2e/ctl_v3_lease_test.go 2023-05-11 13:39:43.000000000 +0200 @@ -300,3 +300,11 @@ cmdArgs := append(cx.PrefixArgs(), "lease", "revoke", leaseID) return spawnWithExpectWithEnv(cmdArgs, cx.envMap, fmt.Sprintf("lease %s revoked", leaseID)) } + +func ctlV3LeaseTimeToLive(cx ctlCtx, leaseID string, withKeys bool) error { + cmdArgs := append(cx.PrefixArgs(), "lease", "timetolive", leaseID) + if withKeys { + cmdArgs = append(cmdArgs, "--keys") + } + return spawnWithExpectWithEnv(cmdArgs, cx.envMap, fmt.Sprintf("lease %s granted with", leaseID)) +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/etcd-3.5.8/tests/go.mod new/etcd-3.5.9/tests/go.mod --- old/etcd-3.5.8/tests/go.mod 2023-04-13 12:08:47.000000000 +0200 +++ new/etcd-3.5.9/tests/go.mod 2023-05-11 13:39:43.000000000 +0200 @@ -28,14 +28,14 @@ github.com/spf13/cobra v1.1.3 github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.8.1 - go.etcd.io/etcd/api/v3 v3.5.8 - go.etcd.io/etcd/client/pkg/v3 v3.5.8 - go.etcd.io/etcd/client/v2 v2.305.8 - go.etcd.io/etcd/client/v3 v3.5.8 - go.etcd.io/etcd/etcdutl/v3 v3.5.8 - go.etcd.io/etcd/pkg/v3 v3.5.8 - go.etcd.io/etcd/raft/v3 v3.5.8 - go.etcd.io/etcd/server/v3 v3.5.8 + go.etcd.io/etcd/api/v3 v3.5.9 + go.etcd.io/etcd/client/pkg/v3 v3.5.9 + go.etcd.io/etcd/client/v2 v2.305.9 + go.etcd.io/etcd/client/v3 v3.5.9 + go.etcd.io/etcd/etcdutl/v3 v3.5.9 + go.etcd.io/etcd/pkg/v3 v3.5.9 + go.etcd.io/etcd/raft/v3 v3.5.9 + go.etcd.io/etcd/server/v3 v3.5.9 go.uber.org/zap v1.17.0 golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/etcd-3.5.8/tests/integration/v3_auth_test.go new/etcd-3.5.9/tests/integration/v3_auth_test.go --- old/etcd-3.5.8/tests/integration/v3_auth_test.go 2023-04-13 12:08:47.000000000 +0200 +++ new/etcd-3.5.9/tests/integration/v3_auth_test.go 2023-05-11 13:39:43.000000000 +0200 @@ -177,12 +177,10 @@ // wait for lease expire time.Sleep(3 * time.Second) - tresp, terr := api.Lease.LeaseTimeToLive( + tresp, terr := rootc.TimeToLive( context.TODO(), - &pb.LeaseTimeToLiveRequest{ - ID: int64(leaseID), - Keys: true, - }, + leaseID, + clientv3.WithAttachedKeys(), ) if terr != nil { t.Error(terr) @@ -553,3 +551,86 @@ <-watchEndCh } + +func TestV3AuthWithLeaseTimeToLive(t *testing.T) { + BeforeTest(t) + clus := NewClusterV3(t, &ClusterConfig{Size: 1}) + defer clus.Terminate(t) + + users := []user{ + { + name: "user1", + password: "user1-123", + role: "role1", + key: "k1", + end: "k3", + }, + { + name: "user2", + password: "user2-123", + role: "role2", + key: "k2", + end: "k4", + }, + } + authSetupUsers(t, toGRPC(clus.Client(0)).Auth, users) + + authSetupRoot(t, toGRPC(clus.Client(0)).Auth) + + user1c, cerr := NewClient(t, clientv3.Config{Endpoints: clus.Client(0).Endpoints(), Username: "user1", Password: "user1-123"}) + if cerr != nil { + t.Fatal(cerr) + } + defer user1c.Close() + + user2c, cerr := NewClient(t, clientv3.Config{Endpoints: clus.Client(0).Endpoints(), Username: "user2", Password: "user2-123"}) + if cerr != nil { + t.Fatal(cerr) + } + defer user2c.Close() + + leaseResp, err := user1c.Grant(context.TODO(), 90) + if err != nil { + t.Fatal(err) + } + leaseID := leaseResp.ID + _, err = user1c.Put(context.TODO(), "k1", "val", clientv3.WithLease(leaseID)) + if err != nil { + t.Fatal(err) + } + // k2 can be accessed from both user1 and user2 + _, err = user1c.Put(context.TODO(), "k2", "val", clientv3.WithLease(leaseID)) + if err != nil { + t.Fatal(err) + } + + _, err = user1c.TimeToLive(context.TODO(), leaseID) + if err != nil { + t.Fatal(err) + } + + _, err = user2c.TimeToLive(context.TODO(), leaseID) + if err != nil { + t.Fatal(err) + } + + _, err = user2c.TimeToLive(context.TODO(), leaseID, clientv3.WithAttachedKeys()) + if err == nil { + t.Fatal("timetolive from user2 should be failed with permission denied") + } + + rootc, cerr := NewClient(t, clientv3.Config{Endpoints: clus.Client(0).Endpoints(), Username: "root", Password: "123"}) + if cerr != nil { + t.Fatal(cerr) + } + defer rootc.Close() + + if _, err := rootc.RoleRevokePermission(context.TODO(), "role1", "k1", "k3"); err != nil { + t.Fatal(err) + } + + _, err = user1c.TimeToLive(context.TODO(), leaseID, clientv3.WithAttachedKeys()) + if err == nil { + t.Fatal("timetolive from user2 should be failed with permission denied") + } +} ++++++ vendor.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/etcdctl/vendor/go.etcd.io/etcd/api/v3/version/version.go new/vendor/etcdctl/vendor/go.etcd.io/etcd/api/v3/version/version.go --- old/vendor/etcdctl/vendor/go.etcd.io/etcd/api/v3/version/version.go 2023-04-26 10:54:45.793320654 +0200 +++ new/vendor/etcdctl/vendor/go.etcd.io/etcd/api/v3/version/version.go 2023-05-25 10:54:34.635492323 +0200 @@ -26,7 +26,7 @@ var ( // MinClusterVersion is the min cluster version this etcd binary is compatible with. MinClusterVersion = "3.0.0" - Version = "3.5.8" + Version = "3.5.9" APIVersion = "unknown" // Git SHA Value will be set during build diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/etcdctl/vendor/go.etcd.io/etcd/server/v3/etcdserver/v3_server.go new/vendor/etcdctl/vendor/go.etcd.io/etcd/server/v3/etcdserver/v3_server.go --- old/vendor/etcdctl/vendor/go.etcd.io/etcd/server/v3/etcdserver/v3_server.go 2023-04-26 10:54:45.813321168 +0200 +++ new/vendor/etcdctl/vendor/go.etcd.io/etcd/server/v3/etcdserver/v3_server.go 2023-05-25 10:54:34.651492018 +0200 @@ -336,7 +336,32 @@ return -1, ErrCanceled } -func (s *EtcdServer) LeaseTimeToLive(ctx context.Context, r *pb.LeaseTimeToLiveRequest) (*pb.LeaseTimeToLiveResponse, error) { +func (s *EtcdServer) checkLeaseTimeToLive(ctx context.Context, leaseID lease.LeaseID) (uint64, error) { + rev := s.AuthStore().Revision() + if !s.AuthStore().IsAuthEnabled() { + return rev, nil + } + authInfo, err := s.AuthInfoFromCtx(ctx) + if err != nil { + return rev, err + } + if authInfo == nil { + return rev, auth.ErrUserEmpty + } + + l := s.lessor.Lookup(leaseID) + if l != nil { + for _, key := range l.Keys() { + if err := s.AuthStore().IsRangePermitted(authInfo, []byte(key), []byte{}); err != nil { + return 0, err + } + } + } + + return rev, nil +} + +func (s *EtcdServer) leaseTimeToLive(ctx context.Context, r *pb.LeaseTimeToLiveRequest) (*pb.LeaseTimeToLiveResponse, error) { if s.isLeader() { if err := s.waitAppliedIndex(); err != nil { return nil, err @@ -386,6 +411,31 @@ return nil, ErrCanceled } +func (s *EtcdServer) LeaseTimeToLive(ctx context.Context, r *pb.LeaseTimeToLiveRequest) (*pb.LeaseTimeToLiveResponse, error) { + var rev uint64 + var err error + if r.Keys { + // check RBAC permission only if Keys is true + rev, err = s.checkLeaseTimeToLive(ctx, lease.LeaseID(r.ID)) + if err != nil { + return nil, err + } + } + + resp, err := s.leaseTimeToLive(ctx, r) + if err != nil { + return nil, err + } + + if r.Keys { + if s.AuthStore().IsAuthEnabled() && rev != s.AuthStore().Revision() { + return nil, auth.ErrAuthOldRevision + } + } + return resp, nil +} + +// LeaseLeases is really ListLeases !??? func (s *EtcdServer) LeaseLeases(ctx context.Context, r *pb.LeaseLeasesRequest) (*pb.LeaseLeasesResponse, error) { ls := s.lessor.Leases() lss := make([]*pb.LeaseStatus, len(ls)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/etcdctl/vendor/modules.txt new/vendor/etcdctl/vendor/modules.txt --- old/vendor/etcdctl/vendor/modules.txt 2023-04-26 10:54:45.909323632 +0200 +++ new/vendor/etcdctl/vendor/modules.txt 2023-05-25 10:54:34.551493926 +0200 @@ -99,7 +99,7 @@ # go.etcd.io/bbolt v1.3.7 ## explicit; go 1.17 go.etcd.io/bbolt -# go.etcd.io/etcd/api/v3 v3.5.8 => ../api +# go.etcd.io/etcd/api/v3 v3.5.9 => ../api ## explicit; go 1.19 go.etcd.io/etcd/api/v3/authpb go.etcd.io/etcd/api/v3/etcdserverpb @@ -107,7 +107,7 @@ go.etcd.io/etcd/api/v3/mvccpb go.etcd.io/etcd/api/v3/v3rpc/rpctypes go.etcd.io/etcd/api/v3/version -# go.etcd.io/etcd/client/pkg/v3 v3.5.8 => ../client/pkg +# go.etcd.io/etcd/client/pkg/v3 v3.5.9 => ../client/pkg ## explicit; go 1.19 go.etcd.io/etcd/client/pkg/v3/fileutil go.etcd.io/etcd/client/pkg/v3/logutil @@ -117,10 +117,10 @@ go.etcd.io/etcd/client/pkg/v3/tlsutil go.etcd.io/etcd/client/pkg/v3/transport go.etcd.io/etcd/client/pkg/v3/types -# go.etcd.io/etcd/client/v2 v2.305.8 => ../client/v2 +# go.etcd.io/etcd/client/v2 v2.305.9 => ../client/v2 ## explicit; go 1.19 go.etcd.io/etcd/client/v2 -# go.etcd.io/etcd/client/v3 v3.5.8 => ../client/v3 +# go.etcd.io/etcd/client/v3 v3.5.9 => ../client/v3 ## explicit; go 1.19 go.etcd.io/etcd/client/v3 go.etcd.io/etcd/client/v3/concurrency @@ -129,11 +129,11 @@ go.etcd.io/etcd/client/v3/internal/resolver go.etcd.io/etcd/client/v3/mirror go.etcd.io/etcd/client/v3/snapshot -# go.etcd.io/etcd/etcdutl/v3 v3.5.8 => ../etcdutl +# go.etcd.io/etcd/etcdutl/v3 v3.5.9 => ../etcdutl ## explicit; go 1.19 go.etcd.io/etcd/etcdutl/v3/etcdutl go.etcd.io/etcd/etcdutl/v3/snapshot -# go.etcd.io/etcd/pkg/v3 v3.5.8 => ../pkg +# go.etcd.io/etcd/pkg/v3 v3.5.9 => ../pkg ## explicit; go 1.19 go.etcd.io/etcd/pkg/v3/adt go.etcd.io/etcd/pkg/v3/cobrautl @@ -151,14 +151,14 @@ go.etcd.io/etcd/pkg/v3/schedule go.etcd.io/etcd/pkg/v3/traceutil go.etcd.io/etcd/pkg/v3/wait -# go.etcd.io/etcd/raft/v3 v3.5.8 => ../raft +# go.etcd.io/etcd/raft/v3 v3.5.9 => ../raft ## explicit; go 1.19 go.etcd.io/etcd/raft/v3 go.etcd.io/etcd/raft/v3/confchange go.etcd.io/etcd/raft/v3/quorum go.etcd.io/etcd/raft/v3/raftpb go.etcd.io/etcd/raft/v3/tracker -# go.etcd.io/etcd/server/v3 v3.5.8 => ../server +# go.etcd.io/etcd/server/v3 v3.5.9 => ../server ## explicit; go 1.19 go.etcd.io/etcd/server/v3/auth go.etcd.io/etcd/server/v3/config diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/etcdutl/vendor/go.etcd.io/etcd/api/v3/version/version.go new/vendor/etcdutl/vendor/go.etcd.io/etcd/api/v3/version/version.go --- old/vendor/etcdutl/vendor/go.etcd.io/etcd/api/v3/version/version.go 2023-04-26 10:54:45.793320654 +0200 +++ new/vendor/etcdutl/vendor/go.etcd.io/etcd/api/v3/version/version.go 2023-05-25 10:54:34.635492323 +0200 @@ -26,7 +26,7 @@ var ( // MinClusterVersion is the min cluster version this etcd binary is compatible with. MinClusterVersion = "3.0.0" - Version = "3.5.8" + Version = "3.5.9" APIVersion = "unknown" // Git SHA Value will be set during build diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/etcdutl/vendor/go.etcd.io/etcd/server/v3/etcdserver/v3_server.go new/vendor/etcdutl/vendor/go.etcd.io/etcd/server/v3/etcdserver/v3_server.go --- old/vendor/etcdutl/vendor/go.etcd.io/etcd/server/v3/etcdserver/v3_server.go 2023-04-26 10:54:45.813321168 +0200 +++ new/vendor/etcdutl/vendor/go.etcd.io/etcd/server/v3/etcdserver/v3_server.go 2023-05-25 10:54:34.651492018 +0200 @@ -336,7 +336,32 @@ return -1, ErrCanceled } -func (s *EtcdServer) LeaseTimeToLive(ctx context.Context, r *pb.LeaseTimeToLiveRequest) (*pb.LeaseTimeToLiveResponse, error) { +func (s *EtcdServer) checkLeaseTimeToLive(ctx context.Context, leaseID lease.LeaseID) (uint64, error) { + rev := s.AuthStore().Revision() + if !s.AuthStore().IsAuthEnabled() { + return rev, nil + } + authInfo, err := s.AuthInfoFromCtx(ctx) + if err != nil { + return rev, err + } + if authInfo == nil { + return rev, auth.ErrUserEmpty + } + + l := s.lessor.Lookup(leaseID) + if l != nil { + for _, key := range l.Keys() { + if err := s.AuthStore().IsRangePermitted(authInfo, []byte(key), []byte{}); err != nil { + return 0, err + } + } + } + + return rev, nil +} + +func (s *EtcdServer) leaseTimeToLive(ctx context.Context, r *pb.LeaseTimeToLiveRequest) (*pb.LeaseTimeToLiveResponse, error) { if s.isLeader() { if err := s.waitAppliedIndex(); err != nil { return nil, err @@ -386,6 +411,31 @@ return nil, ErrCanceled } +func (s *EtcdServer) LeaseTimeToLive(ctx context.Context, r *pb.LeaseTimeToLiveRequest) (*pb.LeaseTimeToLiveResponse, error) { + var rev uint64 + var err error + if r.Keys { + // check RBAC permission only if Keys is true + rev, err = s.checkLeaseTimeToLive(ctx, lease.LeaseID(r.ID)) + if err != nil { + return nil, err + } + } + + resp, err := s.leaseTimeToLive(ctx, r) + if err != nil { + return nil, err + } + + if r.Keys { + if s.AuthStore().IsAuthEnabled() && rev != s.AuthStore().Revision() { + return nil, auth.ErrAuthOldRevision + } + } + return resp, nil +} + +// LeaseLeases is really ListLeases !??? func (s *EtcdServer) LeaseLeases(ctx context.Context, r *pb.LeaseLeasesRequest) (*pb.LeaseLeasesResponse, error) { ls := s.lessor.Leases() lss := make([]*pb.LeaseStatus, len(ls)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/etcdutl/vendor/modules.txt new/vendor/etcdutl/vendor/modules.txt --- old/vendor/etcdutl/vendor/modules.txt 2023-04-26 10:54:46.137329489 +0200 +++ new/vendor/etcdutl/vendor/modules.txt 2023-05-25 10:54:34.747490186 +0200 @@ -84,7 +84,7 @@ # go.etcd.io/bbolt v1.3.7 ## explicit; go 1.17 go.etcd.io/bbolt -# go.etcd.io/etcd/api/v3 v3.5.8 => ../api +# go.etcd.io/etcd/api/v3 v3.5.9 => ../api ## explicit; go 1.19 go.etcd.io/etcd/api/v3/authpb go.etcd.io/etcd/api/v3/etcdserverpb @@ -92,7 +92,7 @@ go.etcd.io/etcd/api/v3/mvccpb go.etcd.io/etcd/api/v3/v3rpc/rpctypes go.etcd.io/etcd/api/v3/version -# go.etcd.io/etcd/client/pkg/v3 v3.5.8 => ../client/pkg +# go.etcd.io/etcd/client/pkg/v3 v3.5.9 => ../client/pkg ## explicit; go 1.19 go.etcd.io/etcd/client/pkg/v3/fileutil go.etcd.io/etcd/client/pkg/v3/logutil @@ -102,17 +102,17 @@ go.etcd.io/etcd/client/pkg/v3/tlsutil go.etcd.io/etcd/client/pkg/v3/transport go.etcd.io/etcd/client/pkg/v3/types -# go.etcd.io/etcd/client/v2 v2.305.8 => ../client/v2 +# go.etcd.io/etcd/client/v2 v2.305.9 => ../client/v2 ## explicit; go 1.19 go.etcd.io/etcd/client/v2 -# go.etcd.io/etcd/client/v3 v3.5.8 => ../client/v3 +# go.etcd.io/etcd/client/v3 v3.5.9 => ../client/v3 ## explicit; go 1.19 go.etcd.io/etcd/client/v3 go.etcd.io/etcd/client/v3/credentials go.etcd.io/etcd/client/v3/internal/endpoint go.etcd.io/etcd/client/v3/internal/resolver go.etcd.io/etcd/client/v3/snapshot -# go.etcd.io/etcd/pkg/v3 v3.5.8 => ../pkg +# go.etcd.io/etcd/pkg/v3 v3.5.9 => ../pkg ## explicit; go 1.19 go.etcd.io/etcd/pkg/v3/adt go.etcd.io/etcd/pkg/v3/cobrautl @@ -128,14 +128,14 @@ go.etcd.io/etcd/pkg/v3/schedule go.etcd.io/etcd/pkg/v3/traceutil go.etcd.io/etcd/pkg/v3/wait -# go.etcd.io/etcd/raft/v3 v3.5.8 => ../raft +# go.etcd.io/etcd/raft/v3 v3.5.9 => ../raft ## explicit; go 1.19 go.etcd.io/etcd/raft/v3 go.etcd.io/etcd/raft/v3/confchange go.etcd.io/etcd/raft/v3/quorum go.etcd.io/etcd/raft/v3/raftpb go.etcd.io/etcd/raft/v3/tracker -# go.etcd.io/etcd/server/v3 v3.5.8 => ../server +# go.etcd.io/etcd/server/v3 v3.5.9 => ../server ## explicit; go 1.19 go.etcd.io/etcd/server/v3/auth go.etcd.io/etcd/server/v3/config diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/server/vendor/go.etcd.io/etcd/api/v3/version/version.go new/vendor/server/vendor/go.etcd.io/etcd/api/v3/version/version.go --- old/vendor/server/vendor/go.etcd.io/etcd/api/v3/version/version.go 2023-04-26 10:54:45.793320654 +0200 +++ new/vendor/server/vendor/go.etcd.io/etcd/api/v3/version/version.go 2023-05-25 10:54:34.635492323 +0200 @@ -26,7 +26,7 @@ var ( // MinClusterVersion is the min cluster version this etcd binary is compatible with. MinClusterVersion = "3.0.0" - Version = "3.5.8" + Version = "3.5.9" APIVersion = "unknown" // Git SHA Value will be set during build diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/server/vendor/modules.txt new/vendor/server/vendor/modules.txt --- old/vendor/server/vendor/modules.txt 2023-04-26 10:54:45.701318293 +0200 +++ new/vendor/server/vendor/modules.txt 2023-05-25 10:54:34.351497742 +0200 @@ -125,7 +125,7 @@ # go.etcd.io/bbolt v1.3.7 ## explicit; go 1.17 go.etcd.io/bbolt -# go.etcd.io/etcd/api/v3 v3.5.8 => ../api +# go.etcd.io/etcd/api/v3 v3.5.9 => ../api ## explicit; go 1.19 go.etcd.io/etcd/api/v3/authpb go.etcd.io/etcd/api/v3/etcdserverpb @@ -134,7 +134,7 @@ go.etcd.io/etcd/api/v3/mvccpb go.etcd.io/etcd/api/v3/v3rpc/rpctypes go.etcd.io/etcd/api/v3/version -# go.etcd.io/etcd/client/pkg/v3 v3.5.8 => ../client/pkg +# go.etcd.io/etcd/client/pkg/v3 v3.5.9 => ../client/pkg ## explicit; go 1.19 go.etcd.io/etcd/client/pkg/v3/fileutil go.etcd.io/etcd/client/pkg/v3/logutil @@ -145,10 +145,10 @@ go.etcd.io/etcd/client/pkg/v3/tlsutil go.etcd.io/etcd/client/pkg/v3/transport go.etcd.io/etcd/client/pkg/v3/types -# go.etcd.io/etcd/client/v2 v2.305.8 => ../client/v2 +# go.etcd.io/etcd/client/v2 v2.305.9 => ../client/v2 ## explicit; go 1.19 go.etcd.io/etcd/client/v2 -# go.etcd.io/etcd/client/v3 v3.5.8 => ../client/v3 +# go.etcd.io/etcd/client/v3 v3.5.9 => ../client/v3 ## explicit; go 1.19 go.etcd.io/etcd/client/v3 go.etcd.io/etcd/client/v3/concurrency @@ -160,7 +160,7 @@ go.etcd.io/etcd/client/v3/naming/endpoints go.etcd.io/etcd/client/v3/naming/endpoints/internal go.etcd.io/etcd/client/v3/ordering -# go.etcd.io/etcd/pkg/v3 v3.5.8 => ../pkg +# go.etcd.io/etcd/pkg/v3 v3.5.9 => ../pkg ## explicit; go 1.19 go.etcd.io/etcd/pkg/v3/adt go.etcd.io/etcd/pkg/v3/contention @@ -178,7 +178,7 @@ go.etcd.io/etcd/pkg/v3/schedule go.etcd.io/etcd/pkg/v3/traceutil go.etcd.io/etcd/pkg/v3/wait -# go.etcd.io/etcd/raft/v3 v3.5.8 => ../raft +# go.etcd.io/etcd/raft/v3 v3.5.9 => ../raft ## explicit; go 1.19 go.etcd.io/etcd/raft/v3 go.etcd.io/etcd/raft/v3/confchange