54ef60d033
clientv3: remove redundant retries in Auth, set FailFast=true
...
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-10-19 16:03:12 -07:00
1fa60c9882
clientv3: add TODO for watch retry
...
Later we can do:
```diff
+// RetryWatchClient implements a WatchClient.
+func RetryWatchClient(c *Client) pb.WatchClient {
+ readRetry := c.newRetryWrapper(isReadStopError)
+ wc := pb.NewWatchClient(c.conn)
+ return &retryWatchClient{wc, readRetry}
+}
+
+type retryWatchClient struct {
+ pb.WatchClient
+ readRetry retryRPCFunc
+}
+
+func (rwc *retryWatchClient) Watch(ctx context.Context, opts ...grpc.CallOption) (stream pb.Watch_WatchClient, err error) {
+ err = rwc.readRetry(ctx, func(rctx context.Context) error {
+ stream, err = rwc.WatchClient.Watch(rctx, opts...)
+ return err
+ })
+ return stream, err
+}
- return NewWatchFromWatchClient(pb.NewWatchClient(c.conn))
+ return NewWatchFromWatchClient(RetryWatchClient(c))
```
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-10-19 16:02:01 -07:00
141170c1d4
clientv3: remove redundant retries in Maintenance, set FailFast=true
...
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-10-19 16:01:50 -07:00
c09a89d834
clientv3: remove redundant retries in Cluster, set FailFast=true
...
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-10-19 16:00:45 -07:00
fecd26f141
clientv3: rename to isRepeatableStopError, isNonRepeatableStopError
...
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-10-19 15:58:12 -07:00
b46ab2c36e
clientv3: remove redundant retries in KV, set FailFast=true
...
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-10-19 15:57:10 -07:00
f95f865060
clientv3: unexport pb.LeaseClient in lease client
...
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-10-19 15:02:19 -07:00
87fe8c12ae
clientv3: rename to repeatableRetry in lease client
...
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-10-19 14:58:54 -07:00
29aa4ce2a1
clientv3: remove redundant retries in Lease, set FailFast=true
...
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-10-19 14:53:01 -07:00
2540859ee7
clientv3: separate readyWait for ConnectNotify
...
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-10-19 13:07:22 -07:00
1549403dd2
clientv3: clean up logging, clarify var/field names
...
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-10-19 12:33:25 -07:00
ad24700252
clientv3: handle stale endpoint in health balancer
...
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-10-19 12:02:31 -07:00
7f2b6a19d6
clientv3: fix typo in 'testNetworkPartitionBalancer'
...
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-10-10 16:07:03 -07:00
500c2499f4
clientv3: reset unhealthy on updateAddrs
...
Otherwise, 'mayPin' incorrectly decides if an address
should be pinned or not.
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-10-10 12:28:57 -07:00
e9e17e3fe5
clientv3: pin any endpoint when all unhealthy
...
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-10-09 16:02:18 -07:00
8224c748c9
clientv3/integration: add balancer network partition tests
...
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-10-09 14:54:47 -07:00
fbed568b6a
clientv3/balancer: mark partitioned member as unhealthy
...
Previous behavior is when server returns errors, retry
wrapper does not do anything, while passively expecting
balancer to gray-list the isolated endpoint. This is
problematic when multiple endpoints are passed, and
network partition happens.
This patch adds 'endpointError' method to 'balancer' interface
to actively(possibly even before health-check API gets called)
handle RPC errors and gray-list endpoints for the time being,
thus speeding up the endpoint switch.
This is safe in a single-endpoint case, because balancer will
retry no matter what in such case.
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-10-09 13:40:03 -07:00
1704443c6d
clientv3: only health-check when timeout elapses since last failure
...
Otherwise network-partitioned member with active health-check
server would not be gray-listed, making health-balancer stuck
with isolated endpoint.
Also clarifies some log messages.
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-10-09 13:40:03 -07:00
5096b4ed5d
clientv3/ordering: compare and update prevRev atomically
...
Several goroutines may call setPrevRev concurrently with different
revisions, all higher than prevRev. Previously all of these goroutines
could set prevRev, so prevRev may be replaced by older one.
If response's revision equals to prevRev, there's no need to call
setPrevRev.
2017-10-09 20:06:19 +08:00
bed5f388a8
clientv3: add pinned() method to 'balancer'
...
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-10-06 15:28:21 -07:00
1c6fbcd3d0
clientv3: add debugging lines to 'retry' paths
...
Helpful for debugging client balancer.
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-10-06 10:13:25 -07:00
05f96e8770
clientv3/yaml: add 'TrustedCAfile' field to replace 'CAfile'
...
To be consistent with etcdmain.
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-10-04 14:00:54 -07:00
b2f5393b64
clientv3/ordering: add missing 'errOrderViolation' error check
...
Fix https://github.com/coreos/etcd/issues/8641 .
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-10-03 18:04:36 -07:00
69031e3a6d
clientv3/ordering: acquire setPrevRev mutex only when needed
...
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-10-03 15:06:37 -07:00
0199bdc266
*: fix 'ineffassign' issues
...
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-10-03 10:14:33 -07:00
3f596db104
clientv3: add more health balancer debugging logs
...
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-10-02 15:38:36 -07:00
aac652009d
clientv3/integration: test leasing txn invalidates deleted cache
...
Test cache invalidating in txnLeasing.commitToCache function.
2017-09-30 13:04:06 +08:00
65ffb52e5f
clientv3/integration: add TestWatchKeepAlive
...
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-09-28 15:35:29 -07:00
636815909d
clientv3/integration: match context errors to stopped server
...
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-09-27 13:12:08 -07:00
a439095697
clientv3: wait for ConnectNotify before sending RPCs
...
With slow CPU, gRPC can lag behind with RPCs being sent before
calling 'Up', returning 'no address available' on the first try.
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-09-27 13:12:08 -07:00
92f5746c54
clientv3/integration: fix license, minor nits in leasing_test.go
...
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-09-27 09:23:39 -07:00
090c192517
clientv3: add debugging logs, warnings
...
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-09-26 07:16:16 +09:00
49e5e78d0f
clientv3/integration: test endpoint switches on partitioned member
2017-09-16 13:55:39 -07:00
efd7800e0f
clientv3: try next endpoint point on unavailable error
2017-09-16 13:55:39 -07:00
e3deb9f482
clientv3: test health balancer gray listing
2017-09-15 14:24:46 -07:00
84db8fdaea
clientv3: health check balancer
2017-09-15 14:24:46 -07:00
6f6279075a
Merge pull request #8546 from heyitsanthony/receiver-ci
...
test: check for inconsistent receiver names
2017-09-12 13:59:52 -07:00
10b731baa8
Merge pull request #8516 from purpleidea/feat/leaseid-okay
...
clientv3: Allow naked LeaseID or int64 for LeaseValue Compare's
2017-09-12 09:05:33 -07:00
4fa1dd196c
*: make receiver names consistent
2017-09-12 03:54:04 -07:00
9553afbb24
Merge pull request #8533 from gyuho/grpc
...
*: upgrade grpclog to LoggerV2
2017-09-12 03:53:04 -07:00
6f76d52a1a
*: deprecate grpc.Code, grpc.ErrorDesc
...
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-09-11 09:28:56 -07:00
0b2d8a6c96
*: fix minor typos
...
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-09-11 07:33:35 -07:00
d6c33367c4
clientv3: upgrade grpclog to LoggerV2
...
grpclog.Logger has been deprecated.
2017-09-08 15:25:32 -07:00
9a726b424d
*: fix leaky context creation with cancel
...
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-09-07 13:39:42 -07:00
f65aee0759
*: replace 'golang.org/x/net/context' with 'context'
...
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-09-07 13:39:42 -07:00
252cab0c13
clientv3: Allow naked LeaseID or int64 for LeaseValue Compare's
...
The logical input to Compare would be a LeaseID (type int64) but the
check panics if we give a LeaseID directly. Allow both so that we don't
unnecessarily annoy and confuse the programmer using the API in the most
logical way.
2017-09-07 13:49:35 -04:00
2d0eec0b35
clientv3: goword spelling check
2017-09-06 22:11:33 -07:00
4cbe2e8cae
Merge pull request #8505 from gyuho/conn-timeout
...
clientv3: deprecate grpc.ErrClientConnTimeout errors
2017-09-05 16:50:39 -07:00
550765d037
clientv3: Add LeaseValue helper to Cmp LeaseID values in Txn
2017-09-05 18:51:12 -04:00
15c3c1be28
*: replace 'grpc.ErrClientConnTimeout' with 'context.DeadlineExceeded'
...
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-09-05 14:10:43 -07:00