Yicheng Qin
a364af72af
client: use ugorij/go/codec to unmarshal key response
...
This change speeds up response unmarshal ~2x:
```
BenchmarkSmallResponseUnmarshal 20000 75243 ns/op
BenchmarkManySmallResponseUnmarshal 200 6629661 ns/op
BenchmarkMediumResponseUnmarshal 1000 1359041 ns/op
BenchmarkLargeResponseUnmarshal 20 61600978 ns/op
```
2015-08-16 18:08:54 -07:00
Yicheng Qin
95d100e957
client: add response unmarshal benchmark
...
The benchmark result:
```
BenchmarkSmallResponseUnmarshal 10000 164524 ns/op
BenchmarkManySmallResponseUnmarshal 100 13916636 ns/op
BenchmarkMediumResponseUnmarshal 1000 1974295 ns/op
BenchmarkLargeResponseUnmarshal 20 80462001 ns/op
ok github.com/coreos/etcd/client 7.777s
```
2015-08-16 16:44:50 -07:00
Yicheng Qin
5eed141d54
client: fix clusterError typo in README
...
It helps users to use client better.
2015-08-13 16:38:41 -07:00
Xiang Li
5d06d4ec44
client: print url as string
2015-08-12 10:09:40 -07:00
Yicheng Qin
7d618c46ad
client: clean up README
...
Address rob's comments about sentences in README.
2015-08-11 15:33:56 -07:00
Yicheng Qin
dceacacd49
Merge pull request #3194 from yichengq/client-readme
...
client: add README
2015-08-11 13:35:54 -07:00
Yicheng Qin
8a7cf56e13
client: add README
...
It describes some basic usage and caveat of etcd/client package.
Write it together with Xiang.
2015-08-11 12:07:24 -07:00
Yicheng Qin
a1ef699aeb
client: return context.DeadlineExceeded instead of ClusterError
...
This is done to match user expectation to see context.DeadlineExceeded
when it reaches deadline.
2015-08-11 10:18:38 -07:00
Yicheng Qin
f4c29a5f55
client: support to set timeout for each request
...
Add HeaderTimeout field in Config, so users could set timeout for each request.
Before this, one hanged request may block the call for long time. After
this, if the network is good, the user could set short timeout and expect
that API call can attempt next available endpoint quickly.
2015-08-11 10:01:05 -07:00
Yicheng Qin
0ab16db728
client: Sync() pin the endpoint when member list doesn't change
...
This helps client to pin the same endpoint as long as cluster doesn't change.
2015-08-07 10:08:28 -07:00
Xiang Li
b9c6b64d61
Merge pull request #3216 from yichengq/cancel-err
...
client: return context canceled error correctly
2015-08-06 15:04:49 -07:00
Yicheng Qin
78af793338
client: return context canceled error correctly
...
If the body is closed to stop watching, it will ignore the error from
reading body and return context error.
Before this PR, the cancel when watching always returns error `read tcp
127.0.0.1:57824: use of closed network connection`. After this PR, it
will return expected context canceled error.
2015-08-06 14:52:04 -07:00
Xiang Li
b04bb3e0ea
Merge pull request #3229 from xiang90/f_cerr
...
client: return context.Canceled error when user cancels the request
2015-08-06 14:41:19 -07:00
Yicheng Qin
25ad71fbac
Merge pull request #3225 from yichengq/client-record-err
...
client: return correct error for 50x response
2015-08-06 14:40:38 -07:00
Yicheng Qin
cfeaf3d172
client: return correct error for 50x response
...
etcd always returns 500/503 response when it may have no leader.
So we should log the other 50x response in a normal way.
This helps to log correctly when discovery meets 504 error. Before this
PR, it logs like this:
```
18:31:58 etcd2 | 2015/08/4 18:31:58 discovery: error #0 : client: etcd
member https://discovery.etcd.io has no leader
18:31:58 etcd2 | 2015/08/4 18:31:58 discovery: waiting for other nodes:
error connecting to https://discovery.etcd.io , retrying in 4s
```
After this PR:
```
22:20:25 etcd2 | 2015/08/4 22:20:25 discovery: error #0 : client: etcd
member https://discovery.etcd.io returns server error [Gateway Timeout]
22:20:25 etcd2 | 2015/08/4 22:20:25 discovery: waiting for other nodes:
error connecting to https://discovery.etcd.io , retrying in 4s
```
2015-08-06 14:25:03 -07:00
Xiang Li
9a8607fce1
Merge pull request #3187 from yichengq/client-keep-sync
...
client: add KeepSync function
2015-08-06 00:16:28 -07:00
Yicheng Qin
c53b3016ae
client: add AutoSync function
...
AutoSync provides the way for client to syncing member list from
etcd cluster automatically.
2015-08-05 13:22:56 -07:00
Xiang Li
f38187bbdb
client: return context.Canceled error when user cancels the request
2015-08-05 09:52:30 -07:00
Eugene Yakubovich
6312e22b1d
client: handle empty watch responses elegantly
...
Even though current etcd does not time out
watches, the client could be running against
an old etcd version or the server may close
polling connection for other reasons.
This patch ignores successful (as in 200)
responses with emtpy bodies instead
of producing JSON errors.
2015-08-03 11:47:21 -07:00
Xiang Li
a47e661fff
discovery: print out detailed cluster error
2015-07-29 23:06:57 +08:00
Xiang Li
5fa8652241
client: return cluster error if the etcd cluster is not avaliable
...
Add a new ClusterError type. It contians all encountered errors and
return ClusterNotAvailable as the error string.
2015-07-29 22:55:15 +08:00
Yicheng Qin
6184e271a4
Merge pull request #3164 from yichengq/pin-endpoint
...
client: pin itself to an endpoint that given
2015-07-27 14:35:51 -07:00
Yicheng Qin
ea2347a40f
client: pin itself to an endpoint that given
...
1. When reset endpoints, client will choose a random endpoint to pin.
2. If the pinned endpoint is healthy, client will keep using it.
3. If the pinned endpoint becomes unhealthy, client will attempt other
endpoints and update its pin.
2015-07-27 13:36:53 -07:00
Yicheng Qin
b20b87893f
client: add Quorum option in getOption
2015-07-22 15:19:34 -07:00
Xiang Li
d2dac0fe59
client: consume json error and return ErrInvaildJSON
...
The default JSON error is not very readable. We let client
consume the error and return a more understandable error in
the context of etcd.
Fix #3120
2015-07-21 12:53:21 -07:00
Xiang Li
6e3769d39e
client: add member update
2015-07-21 12:53:20 -07:00
Xiang Li
e3fcc450cf
etcdctl: make rm use etcd/client
2015-07-21 12:53:19 -07:00
Yicheng Qin
cf050ee21d
Merge pull request #2943 from yichengq/fix-client-test
...
client: fix TestSimpleHTTPClientDoCancelContextResponseBodyClosed
2015-06-23 13:43:07 -07:00
Yicheng Qin
7716bdf981
client: fix TestSimpleHTTPClientDoCancelContextResponseBodyClosed
...
This fixes the bug that the test may hang forever because RoundTrip is
blocked. fixes #2449
2015-06-16 11:29:54 -07:00
Barak Michener
64ec8af91b
*: Rename `security` to `auth`
2015-06-15 18:18:50 -04:00
Barak Michener
a4d1a5a6e5
*: Add security/auth support to etcdctl and etcd/client
...
add godep for speakeasy and auth entry parsing
add security_user to client
add role to client
add role commands
add auth support to etcdclient and etcdctl(member/user)
add enable/disable to etcdctl
better error messages, read/write/readwrite
Bump go-etcd to include codec changes, add new dependency
verify the error for revoke/add if nothing changed, remove security-merging prefix
2015-06-10 16:58:10 -04:00
Xiang Li
15ac4f08f8
client: fix cancel watch
...
ioutil.ReadAll is a blocking call, we need to wait cancelation
during the call.
2015-06-05 15:40:43 -07:00
Xiang Li
4f2df84a38
client: support printing cURL command
2015-06-03 10:02:37 -07:00
Chance Zibolski
48e144ae2e
client: Support creating directory through KeysAPI
...
Creating a directory is done using the Set() method and a SetOptions
struct with it's Dir field set to true.
2015-05-07 10:47:18 -07:00
Brian Waldon
ee9e336fd4
client: add Node.TTLDuration()
2015-05-05 15:03:24 -07:00
Yicheng Qin
39dae50e71
client: fix test name typo
...
This is introduced at d89a862
2015-04-24 18:05:18 -07:00
Xiang Li
91c45c3243
client: 410 is a vaild response for member.Remove
...
When removing a member, etcdserver might return 410 that indicates
the member has been removed. To client, 410 is a vaild response since
the client might do internal retry.
2015-04-24 17:01:23 -07:00
Xiang Li
61e94ae16c
Merge pull request #2625 from bakins/client-srv
...
Initial SRV discovery for clients
2015-04-17 08:07:32 -07:00
Brian Akins
c4899c201e
client: Discovery via SRV lookups
...
Based on code from discovery/srv.go. The returns the target as DNS
returns it. In the case of SSL, certs are tied to the hostname and not
the IP address generally.
Solves #2547
2015-04-17 10:57:01 -04:00
Chance Zibolski
d89a8628c6
client: Add CreateInOrder method to client.KeysAPI
...
Allows creating nodes within a given directory with atomically increasing
keys
2015-04-13 17:23:17 -07:00
Xiang Li
8e9f2bb9e6
Merge pull request #2634 from xiang90/client-new
...
client: add dir/ttl fields into node
2015-04-07 09:11:19 -07:00
Xiang Li
666a97271d
client: add dir/ttl fields into node
2015-04-06 21:47:20 -07:00
Alex Crawford
d9ad6aa2a9
*: update to use IANA-assigned ports
2015-04-06 13:49:43 -07:00
Brian Waldon
9fe78c8bc4
client: don't use nested actions
2015-02-28 10:45:21 -08:00
Brian Waldon
25cf916a80
client: ensure Response closed on cancel
2015-02-28 10:45:21 -08:00
Brian Waldon
b41d6bc416
client: set hard limit on redirect checks
2015-02-28 10:45:21 -08:00
Brian Waldon
50a9b2d9c8
client: rm naked return from httpClusterClient.Do
2015-02-28 10:45:21 -08:00
Brian Waldon
99aa0e1fcc
client: test httpClusterClient.reset failure cases
2015-02-28 10:45:21 -08:00
Brian Waldon
ed173a2a76
client: fix bad URL fixture
2015-02-28 10:45:21 -08:00
Brian Waldon
cd777b2966
client: test httpClusterClient.Sync
2015-02-28 10:45:21 -08:00
Brian Waldon
ae062a0825
client: move lock so MembersAPI.List doesn't deadlock
2015-02-28 10:45:21 -08:00
Brian Waldon
83930ac113
client: test DefaultCheckRedirect
2015-02-28 10:45:21 -08:00
Brian Waldon
943c7ef307
client: test httpKeysAPI's Create and Update methods
2015-02-28 10:45:21 -08:00
Brian Waldon
115e758c32
client: test httpKeysAPI.Delete
2015-02-28 10:45:21 -08:00
Brian Waldon
ece03fb987
client: drop unnecessary field deleteAction.Value
2015-02-28 10:45:21 -08:00
Brian Waldon
6fc209e574
client: test httpKeysAPI.Get
2015-02-28 10:45:21 -08:00
Brian Waldon
32bfcca5a8
client: test httpKeysAPI.Set
2015-02-28 10:45:20 -08:00
Brian Waldon
14b3f96091
client: test httpKeysAPI.Watcher
2015-02-28 10:45:20 -08:00
Brian Waldon
cd85451971
client: clarify relationship of AfterIndex and waitIndex
2015-02-28 10:45:20 -08:00
Brian Waldon
09017af35e
client: test httpWatcher
2015-02-28 10:38:47 -08:00
Brian Waldon
11a6cb68a6
client: test unmarshaling of failure responses
2015-02-28 10:38:47 -08:00
Brian Waldon
9378413283
client: exhaustive member-related testing
2015-02-28 10:38:47 -08:00
Brian Waldon
32ff3ce26f
client: test for non-integer X-Etcd-Index
2015-02-28 10:38:47 -08:00
Brian Waldon
8a6b72b08d
client: tweak test fields
2015-02-28 10:38:47 -08:00
Brian Waldon
b174732812
client: introduce Error type
2015-02-28 10:38:47 -08:00
Brian Waldon
8fdc6b154e
client: document PrevExistType
2015-02-28 10:38:47 -08:00
Brian Waldon
39b5b083c0
client: document Member fields
2015-02-28 10:38:47 -08:00
Brian Waldon
27de5eec76
client: document Response and Node structs
2015-02-28 10:38:47 -08:00
Brian Waldon
4a77760f56
client: break dependency on httptypes pkg
2015-02-28 10:38:46 -08:00
Brian Waldon
9b334e07a6
client: allow caller to decide HTTP redirect policy
2015-02-28 10:38:46 -08:00
Brian Waldon
1c03df62a5
client: WaitIndex -> AfterIndex
2015-02-28 10:38:46 -08:00
Brian Waldon
a834f297f9
client: document KeysAPI methods
2015-02-28 10:22:52 -08:00
Brian Waldon
2b5589ddcd
client: encourage error handling in package doc
2015-02-28 10:22:52 -08:00
Brian Waldon
6fd105d554
client: document using a custom context
2015-02-28 10:22:52 -08:00
Brian Waldon
479a17dcbf
client: add GetOptions.Sort
2015-02-28 10:22:52 -08:00
Brian Waldon
84ede6fbec
client: use options struct for KeysAPI.Get
2015-02-28 10:22:52 -08:00
Brian Waldon
8621caf3e2
client: define a DefaultTransport
2015-02-28 10:22:52 -08:00
Brian Waldon
ce4486ff85
client: document Client methods
2015-02-28 10:22:52 -08:00
Brian Waldon
1773d0a18b
client: simplify CancelableTransport doc
2015-02-28 10:22:52 -08:00
Brian Waldon
19dd4a0f3c
client: document Config
2015-02-28 10:22:52 -08:00
Brian Waldon
6d82472275
client: move http.go into client.go
2015-02-28 10:22:52 -08:00
Brian Waldon
bfbf672ce4
client: document MembersAPI methods
2015-02-28 10:22:52 -08:00
Brian Waldon
7255fb1b62
client: alias etcdserver/etcdhttp/httptypes.Member
2015-02-28 10:22:52 -08:00
Brian Waldon
932351a00d
client: document Watcher.Next
2015-02-28 10:22:52 -08:00
Brian Waldon
aee95468ba
client: document MembersAPI/KeysAPI constructors
2015-02-28 10:22:51 -08:00
Brian Waldon
e885c6c5f4
client: document *Options
2015-02-28 10:22:51 -08:00
Brian Waldon
88cea415a7
client: NewDiscoveryKeysAPI -> NewKeysAPIWithPrefix
2015-02-28 10:22:51 -08:00
Brian Waldon
89070fd237
client: package-level doc
2015-02-28 10:22:51 -08:00
Brian Waldon
3d4e1f59dc
client: drop unnecessary Nodes type
2015-02-28 10:22:51 -08:00
Brian Waldon
7ff84351f5
client: centralize exported variables
2015-02-28 10:22:51 -08:00
Brian Waldon
a9f605e5fe
client: unexport defaultV2MembersPrefix
2015-02-28 10:22:51 -08:00
Brian Waldon
bb9f016b91
client: unexport defaultV2KeysPrefix
2015-02-28 10:22:51 -08:00
Brian Waldon
3fdda06602
client: s/SyncableHTTPClient/Client/g
2015-02-28 10:22:51 -08:00
Brian Waldon
bac1d2f420
client: unexport httpClient interface
2015-02-28 10:22:51 -08:00
Brian Waldon
52288fa748
client: remove CancelableTransport arg from httpClientFactory
2015-02-28 10:22:51 -08:00
Brian Waldon
3b41b77cd7
client: ClientConfig -> Config
2015-02-28 10:22:51 -08:00
Brian Waldon
2aecbaf165
client: unexport httpAction
2015-02-28 10:22:51 -08:00
Brian Waldon
3f5e827e3c
client: httpClient -> simpleHTTPClient
2015-02-28 10:22:51 -08:00
Brian Waldon
f037cb9f65
client: collapse unnecessary constructor
2015-02-28 10:22:50 -08:00
Brian Waldon
62054dfb5e
client: don't cache httpClients in httpClusterClient
2015-02-28 10:22:50 -08:00