Benjamin Wang
8ca42a7ae4
clientv3: do not refresh token when using TLS CommonName based authentication
...
When users use the TLS CommonName based authentication, the
authTokenBundle is always nil. But it's possible for the clients
to get `rpctypes.ErrAuthOldRevision` response when the clients
concurrently modify auth data (e.g, addUser, deleteUser etc.).
In this case, there is no need to refresh the token; instead the
clients just need to retry the operations (e.g. Put, Delete etc).
Signed-off-by: Benjamin Wang <wachao@vmware.com>
2022-11-17 08:32:35 +08:00
Hitoshi Mitake
757a8e8f5b
*: implement a retry logic for auth old revision in the client
2022-04-29 23:46:24 +09:00
Ashish Ranjan
9bbdeb4a64
client/v3: refresh the token when ErrUserEmpty is received while retrying
...
To fix a bug in the retry logic caused when the auth token is cleared after receiving `ErrInvalidAuthToken` from the server and the subsequent call to `getToken` also fails due to some reason (eg. context deadline exceeded).
This leaves the client without a token and the retry will continue to fail with `ErrUserEmpty` unless the token is refreshed.
2022-04-29 23:43:36 +09:00
CFC4N
40b71074e8
clientv3: get AuthToken automatically when clientConn is ready.
...
fixes : #11954
2020-09-30 17:14:22 +08:00
Gyuho Lee
1471e12108
clientv3: embed api version in metadata
...
ref.
https://github.com/etcd-io/etcd/pull/11687
Signed-off-by: Gyuho Lee <leegyuho@amazon.com>
clientv3: fix racy writes to context key
=== RUN TestWatchOverlapContextCancel
==================
WARNING: DATA RACE
Write at 0x00c42110dd40 by goroutine 99:
runtime.mapassign()
/usr/local/go/src/runtime/hashmap.go:485 +0x0
github.com/coreos/etcd/clientv3.metadataSet()
/go/src/github.com/coreos/etcd/gopath/src/github.com/coreos/etcd/clientv3/ctx.go:61 +0x8c
github.com/coreos/etcd/clientv3.withVersion()
/go/src/github.com/coreos/etcd/gopath/src/github.com/coreos/etcd/clientv3/ctx.go:47 +0x137
github.com/coreos/etcd/clientv3.newStreamClientInterceptor.func1()
/go/src/github.com/coreos/etcd/gopath/src/github.com/coreos/etcd/clientv3/client.go:309 +0x81
google.golang.org/grpc.NewClientStream()
/go/src/github.com/coreos/etcd/gopath/src/google.golang.org/grpc/stream.go:101 +0x10e
github.com/coreos/etcd/etcdserver/etcdserverpb.(*watchClient).Watch()
/go/src/github.com/coreos/etcd/gopath/src/github.com/coreos/etcd/etcdserver/etcdserverpb/rpc.pb.go:3193 +0xe9
github.com/coreos/etcd/clientv3.(*watchGrpcStream).openWatchClient()
/go/src/github.com/coreos/etcd/gopath/src/github.com/coreos/etcd/clientv3/watch.go:788 +0x143
github.com/coreos/etcd/clientv3.(*watchGrpcStream).newWatchClient()
/go/src/github.com/coreos/etcd/gopath/src/github.com/coreos/etcd/clientv3/watch.go:700 +0x5c3
github.com/coreos/etcd/clientv3.(*watchGrpcStream).run()
/go/src/github.com/coreos/etcd/gopath/src/github.com/coreos/etcd/clientv3/watch.go:431 +0x12b
Previous read at 0x00c42110dd40 by goroutine 130:
reflect.maplen()
/usr/local/go/src/runtime/hashmap.go:1165 +0x0
reflect.Value.MapKeys()
/usr/local/go/src/reflect/value.go:1090 +0x43b
fmt.(*pp).printValue()
/usr/local/go/src/fmt/print.go:741 +0x1885
fmt.(*pp).printArg()
/usr/local/go/src/fmt/print.go:682 +0x1b1
fmt.(*pp).doPrintf()
/usr/local/go/src/fmt/print.go:998 +0x1cad
fmt.Sprintf()
/usr/local/go/src/fmt/print.go:196 +0x77
github.com/coreos/etcd/clientv3.streamKeyFromCtx()
/go/src/github.com/coreos/etcd/gopath/src/github.com/coreos/etcd/clientv3/watch.go:825 +0xc8
github.com/coreos/etcd/clientv3.(*watcher).Watch()
/go/src/github.com/coreos/etcd/gopath/src/github.com/coreos/etcd/clientv3/watch.go:265 +0x426
github.com/coreos/etcd/clientv3/integration.testWatchOverlapContextCancel.func1()
/go/src/github.com/coreos/etcd/gopath/src/github.com/coreos/etcd/clientv3/integration/watch_test.go:959 +0x23e
Goroutine 99 (running) created at:
github.com/coreos/etcd/clientv3.(*watcher).newWatcherGrpcStream()
/go/src/github.com/coreos/etcd/gopath/src/github.com/coreos/etcd/clientv3/watch.go:236 +0x59d
github.com/coreos/etcd/clientv3.(*watcher).Watch()
/go/src/github.com/coreos/etcd/gopath/src/github.com/coreos/etcd/clientv3/watch.go:278 +0xbb6
github.com/coreos/etcd/clientv3/integration.testWatchOverlapContextCancel.func1()
/go/src/github.com/coreos/etcd/gopath/src/github.com/coreos/etcd/clientv3/integration/watch_test.go:959 +0x23e
Goroutine 130 (running) created at:
github.com/coreos/etcd/clientv3/integration.testWatchOverlapContextCancel()
/go/src/github.com/coreos/etcd/gopath/src/github.com/coreos/etcd/clientv3/integration/watch_test.go:979 +0x76d
github.com/coreos/etcd/clientv3/integration.TestWatchOverlapContextCancel()
/go/src/github.com/coreos/etcd/gopath/src/github.com/coreos/etcd/clientv3/integration/watch_test.go:922 +0x44
testing.tRunner()
/usr/local/go/src/testing/testing.go:657 +0x107
==================
Signed-off-by: Gyuho Lee <leegyuho@amazon.com>
2020-03-18 17:17:00 -07:00
Gyuho Lee
4388404f56
clientv3: fix retry/streamer error message
...
Signed-off-by: Gyuho Lee <leegyuho@amazon.com>
2019-10-31 10:09:18 -07:00
Gyuho Lee
1caaa9ed4a
test: test update for Go 1.12.5 and related changes
...
Update to Go 1.12.5 testing. Remove deprecated unused and gosimple
pacakges, and mask staticcheck 1006. Also, fix unconvert errors related
to unnecessary type conversions and following staticcheck errors:
- remove redundant return statements
- use for range instead of for select
- use time.Since instead of time.Now().Sub
- omit comparison to bool constant
- replace T.Fatal and T.Fatalf in tests with T.Error and T.Fatalf respectively because the goroutine calls T.Fatal must be called in the same goroutine as the test
- fix error strings that should not be capitalized
- use sort.Strings(...) instead of sort.Sort(sort.StringSlice(...))
- use he status code of Canceled instead of grpc.ErrClientConnClosing which is deprecated
- use use status.Errorf instead of grpc.Errorf which is deprecated
Related #10528 #10438
2019-06-05 17:02:05 -04:00
Xiang Li
23a89b0f09
Merge pull request #10755 from wrfly/patch-3
...
fix #10754
2019-05-28 20:50:52 -07:00
Shaun
3754767dbc
clientv3: return getToken error when retryAuth
2019-05-29 10:15:22 +08:00
Gyuho Lee
34bd797e67
*: revert module import paths
...
Signed-off-by: Gyuho Lee <leegyuho@amazon.com>
2019-05-28 15:39:35 -07:00
shivaramr
9150bf52d6
go modules: Fix module path version to include version number
2019-04-26 15:29:50 -07:00
Gyuho Lee
4f46b65748
clientv3: use default info level log configuration
...
Signed-off-by: Gyuho Lee <leegyuho@amazon.com>
2019-02-21 10:57:38 -08:00
Gyuho Lee
6af8ce6c60
clientv3: clarify retry interceptor logging
...
Log only when it errors + some clarification
Signed-off-by: Gyuho Lee <leegyuho@amazon.com>
2019-02-15 08:48:37 -08:00
Gyuho Lee
61218004c0
clientv3: remove "JitterUp" imports
...
Signed-off-by: Gyuho Lee <leegyuho@amazon.com>
2019-01-03 11:00:45 -08:00
Gyuho Lee
0ef9ef3c74
*: rerun "gofmt"
...
Signed-off-by: Gyuho Lee <leegyuho@amazon.com>
2018-08-28 18:25:39 -07:00
Gyuho Lee
2ac04381a2
clientv3: update Go import paths to "go.etcd.io"
...
Signed-off-by: Gyuho Lee <leegyuho@amazon.com>
2018-08-28 17:47:55 -07:00
Gyuho Lee
90a5da18cf
clientv3: clean up code format
...
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-21 16:03:12 -07:00
Gyuho Lee
a76681073d
clientv3: add "zap.Config" to replace global logger
...
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-15 13:41:28 -07:00
Gyuho Lee
08da08bb19
clientv3: clarify retry function names, do not retry on dial error
...
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-15 13:41:28 -07:00
Gyuho Lee
a3032d3d0b
*: fix fmt tests, reenable "testEmbedEtcdGracefulStop"
...
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-15 13:41:28 -07:00
Joe Betz
55ef9cc1d0
clientv3: Add auth retry to retry interceptor
2018-06-15 13:41:28 -07:00
Joe Betz
a5b2fb5563
clientv3: Introduce custom retry interceptor based on go-grpc-middleware/retry
2018-06-15 13:41:28 -07:00