Commit Graph

502 Commits

Author SHA1 Message Date
lyuxuan 980d9e0348
ClientConn: add Target() returning target string (#2233) 2018-07-23 16:19:11 -07:00
Menghan Li 445634bdcc
client: define dialOptions as interfaces instead of functions (#2230) 2018-07-19 17:33:42 -07:00
Jean de Klerk 1dab6d184d addrconn: remove unused wait() method (#2220) 2018-07-16 08:21:34 -07:00
dfawley e193757038
internal/transport: remove some unused fields from structs (#2213)
- Flush and Authority are never read by the transport.
- Authority is used indirectly; move it to dialOptions.
- Delay is only set to false.
2018-07-13 09:56:47 -07:00
Menghan Li 984bb2c619
internal: move DialOptions to a new file (#2193) 2018-07-12 18:01:30 -07:00
dfawley 11b582728a
transport: move to internal to make room for new, public transport API (#2212)
This is a breaking change, but the transport package was never intended for use outside of grpc.  Any current users that we are aware of are incorrect or have a preferred alternative.
2018-07-11 11:22:45 -07:00
Mike Cheng f57a529f33 balancer: add rpc method to PickOptions (#2204)
Provide additional context to Pickers that wish to make decisions based on the RPC method.

Relevant issue: https://github.com/grpc/grpc-go/issues/2103
2018-07-11 10:18:09 -07:00
lyuxuan c491b25057
createTransport: timeout under waitForHandshake case should not have transport transferred to ready stage (#2208) 2018-07-09 18:20:24 -07:00
lyuxuan 264daa2be4
Set and respect HTTP/2 SETTINGS_MAX_HEADER_LIST_SIZE (#2084) 2018-07-09 11:27:58 -07:00
dfawley 40a879c23a
client: Implement gRFC A6: configurable client-side retry support (#2111) 2018-06-27 16:18:41 -07:00
mmukhi 3ec535a269
client, server: update dial/server buffer options to support a "disable" setting (#2147) 2018-06-27 11:16:33 -07:00
Menghan Li b39aa9e037
Revert stickiness (#2175)
Stickiness will be reimplemented as part of a balancer/resolver redesigning/extending.
2018-06-26 10:02:54 -07:00
lyuxuan b28608a9db
channelz: move APIs to internal except channelz service (#2157) 2018-06-18 17:59:08 -07:00
Menghan Li 24f3cca1ff
internal: move backoff to internal (#2141)
So other components such as grpclb can reuse the backoff implementation.
2018-06-13 16:07:37 -07:00
dfawley fb845db15c
internal: Change Lock to RLock since no mutation is performed (#2142) 2018-06-12 12:50:43 -07:00
Carl Mastrangelo 4344c204c9 Split grpclb out of top level grpc package (#2107)
This PR splits out grpclb from grpc.  I have made the PR in several commits so you can see more clearly the steps that happened.

There are a few possibly contentious points that I would like to make clear up front:

* grpclb will no longer autoload as a load balancer.  I think this is okay, as service config is not widely (at all?) used, and I believe this is the only way to access it.
* `internal` is used more, as a way of having code shared between packages without exposing types
* ConnectivityStateEvaluator, as used by grpclb, is no longer thread safe.  I believe there is an outer mutex that guards access, but I want to point out this subtle change up here.

All but one tests pass with this, due to another cyclic dependency.  I can fix this, but it is a little more widely scoped (such as exposing grpc.server and grpc.errorDesc in the internal package).   This PR is a nearly-passing sample of that last step to get this working. 

PTAL @menghanl @dfawley
2018-06-05 09:54:12 -07:00
lyuxuan 854695bef0
client: introduce WithDisableServiceConfig DialOption (#2010) 2018-05-08 10:28:26 -07:00
Chyroc f8dbc38bdc Fix "deprecated" function godoc comments to match standard formatting (#2027) 2018-05-02 08:52:49 -07:00
Menghan Li e8a6e2844b
stickiness: add stickiness support (#1969) 2018-04-24 10:37:52 -07:00
lyuxuan 4166ea7dad
Stage 2: Channelz metric collection (#1909) 2018-04-23 11:22:25 -07:00
Karsten Weiss 7de9139327 Fix typos (#1994) 2018-04-16 10:03:02 -07:00
Karsten Weiss 35a2846daa Various simplifications (gosimple)
This fixes:
clientconn.go:948:3: should write m = cc.sc.Methods[method[:i+1]] instead of m, _ = cc.sc.Methods[method[:i+1]] (S1005)
encoding/proto/proto_test.go:43:5: should use !bytes.Equal(p.GetBody(), expectedBody) instead (S1004)
resolver/dns/dns_resolver.go:260:2: should merge variable declaration with assignment on next line (S1021)
resolver/dns/dns_resolver.go:344:2: should use 'return <expr>' instead of 'if <expr> { return <bool> }; return <bool>' (S1008)
2018-04-15 15:32:33 +02:00
Karsten Weiss 95bbf69653 Remove redundant return statements (gosimple)
This fixes:
balancer/base/balancer.go:149:2: redundant return statement (S1023)
balancer_v1_wrapper.go:260:2: redundant return statement (S1023)
balancer_v1_wrapper.go:273:2: redundant return statement (S1023)
balancer_v1_wrapper.go:285:2: redundant return statement (S1023)
benchmark/benchmark.go:68:2: redundant return statement (S1023)
clientconn.go:1461:2: redundant return statement (S1023)
grpclb.go:223:2: redundant return statement (S1023)
grpclb.go:260:2: redundant return statement (S1023)
grpclb_util.go:201:2: redundant return statement (S1023)
rpc_util.go:278:50: redundant return statement (S1023)
rpc_util.go:296:56: redundant return statement (S1023)
rpc_util.go:314:56: redundant return statement (S1023)
rpc_util.go:333:53: redundant return statement (S1023)
rpc_util.go:354:52: redundant return statement (S1023)
rpc_util.go:387:56: redundant return statement (S1023)
rpc_util.go:416:53: redundant return statement (S1023)
stream.go:651:2: redundant return statement (S1023)
2018-04-15 12:43:34 +02:00
Menghan Li 35aeaeb587 documentation: mention DialContext is non-blocking by default (#1970) 2018-04-12 15:11:22 -07:00
lyuxuan cf3bf7f774
createTransport: check for SHUTDOWN before assigning TransientFailure to ac.state (#1979) 2018-04-10 12:48:04 -07:00
lyuxuan 7f73c863c0
Channelz: Entity Registration and Deletion (#1811) 2018-04-09 11:13:06 -07:00
Sam Batschelet 7316918402 clientconn: add support for unix network in DialContext. (#1883) 2018-04-09 11:12:34 -07:00
mmukhi d0a21a3347
Export changes to OSS. (#1962) 2018-04-05 10:45:41 -07:00
Menghan Li f2620c3803
resolver: keep full unparsed target string if scheme in parsed target is not registered (#1943) 2018-03-27 13:58:27 -07:00
mmukhi 207e2760fd
Fix test race: Atomically access minConnecTimout in testing environment. (#1897) 2018-03-07 10:36:17 -08:00
mmukhi 7c5299d71e
Fix flaky test: TestCloseConnectionWhenServerPrefaceNotReceived (#1870)
* Atomically update minConnectTimeout in test.

* Refactor the flaky test.

* Post review update

* mend
2018-03-02 13:39:55 -08:00
Thomas Meson 12da026194 clientconn: fix a typo in GetMethodConfig documentation (#1867) 2018-02-21 10:14:52 -08:00
Menghan Li 3926816d54
addrConn: Report underlying connection error in RPC error (#1855) 2018-02-14 14:13:10 -08:00
Menghan Li e014063a43
addrConn: keep retrying even on non-temporary errors (#1856) 2018-02-13 16:07:10 -08:00
dfawley 365770fcbd
streams: Stop cleaning up after orphaned streams (#1854)
This change introduces some behavior changes that should not impact users that
are following the proper stream protocol. Specifically, one of the following
conditions must be satisfied:

1. The user calls Close on the ClientConn.
2. The user cancels the context provided to NewClientStream, or its deadline
    expires. (Note that it if the context is no longer needed before the deadline
    expires, it is still recommended to call cancel to prevent bloat.) It is always
    recommended to cancel contexts when they are no longer needed, and to
    never use the background context directly, so all users should always be
    doing this.
3. The user calls RecvMsg (or Recv in generated code) until a non-nil error is
    returned.
4. The user receives any error from Header or SendMsg (or Send in generated
    code) besides io.EOF.  If none of the above happen, this will leak a goroutine
    and a context, and grpc will not call the optionally-configured stats handler
    with a stats.End message.

Before this change, if a user created a stream and the server ended the stream,
the stats handler would be invoked with a stats.End containing the final status
of the stream. Subsequent calls to RecvMsg would then trigger the stats handler
with InPayloads, which may be unexpected by stats handlers.
2018-02-08 10:51:16 -08:00
Menghan Li 37346e3181
Revert "Add WithResolverUserOptions for custom resolver build options" (#1839)
This reverts commit ff1be3fcc5.
2018-02-05 12:52:35 -08:00
dfawley 5ba054bf37
encoding: Introduce new method for registering and choosing codecs (#1813) 2018-01-23 11:39:40 -08:00
Menghan Li 10598f3eb3
Explain target format in DialContext's documentation (#1785) 2018-01-18 13:10:52 -08:00
mmukhi e975017b47
Don't set reconnect parameters when the server has already responded. (#1779) 2018-01-04 11:16:47 -08:00
Menghan Li e6549e636d
Add dial option to set balancer (#1697)
WithBalancerName dial option specifies the name of the balancer to be used by the ClientConn. Service config updates can NOT override the balancer option.
2017-12-18 15:35:42 -08:00
lyuxuan 98b17f20a2
relocate check for shutdown in ac.tearDown() (#1723) 2017-12-15 12:03:41 -08:00
Menghan Li dba60db4f4
Switch balancer to grpclb when at least one address is grpclb address (#1692) 2017-12-12 12:45:05 -08:00
Menghan Li ff1be3fcc5
Add WithResolverUserOptions for custom resolver build options (#1711) 2017-12-06 15:54:01 -08:00
lyuxuan be077907e2
make load balancing policy name string case-insensitive (#1708) 2017-12-04 14:03:22 -08:00
mmukhi ddbb27e545
client: backoff before reconnecting if an HTTP2 server preface was not received (#1648) 2017-12-01 09:55:42 -08:00
Menghan Li 1e1a47f0f2
Re-resolve target when one connection becomes TransientFailure (#1679)
This allows ClientConn to get more up-to-date addresses from resolver.
ClientConn compares new addresses with the cached ones. So if resolver returns the same set of addresses, ClientConn will not notify balancer about it.

Also moved the initialization of resolver and balancer to avoid race. Balancer will only be started when ClientConn gets resolved addresses from balancer.
2017-11-28 13:16:53 -08:00
Menghan Li 2ef021f78d
New grpclb implementation (#1558)
The new grpclb supports fallback to backends if remote balancer is unavailable
2017-11-27 11:16:26 -08:00
Menghan Li 10873b30bf
Fix panics on balancer and resolver updates (#1684)
- NewAddress with empty list (addrConn with an empty address list)
 - NewServiceConfig to switch balancer before the first balancer is built
2017-11-22 13:59:20 -08:00
lyuxuan d6cc72862b
switch balancer based on service config info (#1670) 2017-11-17 11:11:05 -08:00
dfawley 816fa5b06f
Add proper support for 'identity' encoding type (#1664) 2017-11-17 09:24:54 -08:00
Menghan Li 409fd8e23b
addrConn: set ac.state to TransientFailure upon non-temporary errors (#1657)
So failfast RPCs will fail with unavailable errors when this happens.
2017-11-13 16:33:42 -08:00
dfawley 8ff8683602
Implement transparent retries for gRFC A6 (#1597) 2017-11-06 13:45:11 -08:00
Menghan Li af224a8a48
Check ac state shutdown before setting it to TransientFailure (#1643) 2017-11-02 09:56:04 -07:00
Zhouyihai Ding 5db344a40a Introduce new Compressor/Decompressor API (#1428) 2017-10-31 10:21:13 -07:00
Menghan Li b3ed81a60b Fix connectivity state transitions when dialing (#1596) 2017-10-23 14:06:33 -07:00
Menghan Li 1687ce5770 ClientHandshake should get the dialing endpoint as the authority (#1607) 2017-10-23 11:40:43 -07:00
dfawley 5c3d956e18 Re-add support for Go1.6 (#1603) 2017-10-20 12:05:20 -07:00
Menghan Li 94f1917696 Make passthrouth resolver the default instead of dns (#1606) 2017-10-20 12:03:44 -07:00
Menghan Li de0cff50aa Fix goroutine leak in grpclb_test (#1595) 2017-10-19 15:16:16 -07:00
lyuxuan 6f3b6ff46b Parse ServiceConfig JSON string (#1515) 2017-10-19 12:09:19 -07:00
Menghan Li a353537ff5 Register and use default balancers and resolvers (#1551) 2017-10-19 11:32:06 -07:00
dfawley c8405557a4 Remove Go1.6 support (#1492) 2017-10-04 13:57:10 -07:00
dfawley 5a82377e69 transport: refactor of error/cancellation paths (#1533)
- The transport is now responsible for closing its own connection when an error
  occurs or when the context given to it in NewClientTransport() is canceled.

- Remove client/server shutdown channels -- add cancel function to allow
  self-cancellation.

- Plumb the clientConn's context into the client transport to allow for the
  transport to be canceled even after it has been removed from the ac (due to
  graceful close) when the ClientConn is closed.
2017-10-02 11:56:31 -07:00
Menghan Li 4bbdf230d7 New implementation of roundrobin and pickfirst (#1506) 2017-10-02 09:22:57 -07:00
mmukhi 8214c28a62 Make IO Buffer size configurable. (#1544)
* Make IO Buffer size configurable.

* Fixing typo
2017-09-28 14:11:14 -07:00
Menghan Li 59cb69e66d Fix misspells (#1531) 2017-09-20 14:55:57 -07:00
Menghan Li 8233e124e4 Add new Resolver and Balancer APIs (gRFC L9) (#1408)
- Add package balancer and resolver.
 - Change ClientConn internals to new APIs and adds a wrapper for v1 balancer.
2017-08-31 10:59:09 -07:00
ZhouyihaiDing 2308131c44 addrConn: change address to slice of address (#1376)
* addrConn: change address to slice of address
* add pickfirst balancer to test new addrconn
2017-08-21 12:27:04 -07:00
lyuxuan 9d99afc2fd Automatic WriteStatus for RecvMsg/SendMsg error on server side (#1409)
automatically WriteStatus if there's any error when RecvMsg/SendMsg on server side.
2017-08-14 12:24:23 -07:00
Menghan Li e81b5698fd Add and use connectivity package for states (#1430)
* Add and use connectivity package
* Mark cc state APIs as experimental
2017-08-09 10:31:12 -07:00
Andrew Lytvynov 4e56696c6c Fix a goroutine leak in DialContext (#1424)
A leak happens when DialContext times out before a balancer returns any
addresses or before a successful connection is established.

The loop in ClientConn.lbWatcher breaks and doneChan never gets closed.
2017-08-04 13:40:50 -07:00
mmukhi aa5b2f7368 Enabling client process multiple GoAways (#1393) 2017-07-28 09:37:53 -07:00
mmukhi a5d184a8a1 Expose ConnectivityState of a ClientConn. (#1385) 2017-07-24 15:00:53 -07:00
Menghan Li 98eab9baf6 Do not create new addrConn when connection error happens (#1369) 2017-07-20 13:22:59 -07:00
Vitaly Isaev 71260d2171 Fix logging method (#1375) 2017-07-18 10:25:36 -07:00
Menghan Li d6723916d2 Use log severity and verbosity level (#1340)
- All logs use 1 severity level instead of printf
 - All transport logs only go to verbose level 2+
 - The default logger only log errors and verbosity level 1
 - Add environment variable GRPC_GO_LOG_SEVERITY_LEVEL and GRPC_GO_LOG_VERBOSITY_LEVEL to set severity or verbosity levels for the default logger
2017-07-13 12:10:19 -07:00
Menghan Li 77d4a9f456 Add documentation to deprecate WithTimeout dial option (#1333) 2017-06-26 15:18:57 -07:00
田欧 c5c761dbca fix spell (#1314) 2017-06-16 09:59:37 -07:00
Jan Tattermusch ddbf6c46a6 autofix license notice 2017-06-08 14:42:19 +02:00
lyuxuan 9f919f7b81 Merge pull request #1165 from lyuxuan/service_config_pr
Expand service config support
2017-05-22 11:15:26 -07:00
Yuxuan Li cb64938381 fix minor issues 2017-05-19 16:02:02 -07:00
Alexander Morozov 9bf8ea0a82 clientconn, server: replace time.After with time.NewTimer (#998)
When timeout is not hit `time.After` will leak unnecessary timer, so
it's better to stop timer explicitly.

Signed-off-by: Alexander Morozov <lk4d4math@gmail.com>
2017-05-19 15:57:10 -07:00
Yuxuan Li ed64d51c18 remove unnecessary ok 2017-05-19 11:52:09 -07:00
Yuxuan Li d19bbe846e change max message size functions name 2017-05-19 11:08:40 -07:00
lyuxuan 7505481848 comments added 2017-05-15 15:13:53 -07:00
lyuxuan 4d2b4b5c51 fix minor typo 2017-05-15 14:36:20 -07:00
Yuxuan Li 35d77ea991 merge master, resolve conflicts 2017-05-15 13:54:22 -07:00
Yuxuan Li bdf9a640e4 add timeout test, add check or pointer filed in callOption, fix minor issues 2017-05-15 13:51:11 -07:00
Menghan Li 07bd9434fa Pass custom dialer to balancer (#1205)
* Pass custom dialer to balancer
* add test for passing custom dialer
* add grpclb package comment
2017-05-11 10:10:19 -07:00
lyuxuan 3ea287058c Merge branch 'master' into service_config_pr 2017-05-07 16:49:32 -07:00
Alec Thomas ffa4ec7da2 Ensure that RoundRobin.Close() does not panic. (#1139) 2017-05-05 13:59:00 -07:00
MakMukhi f3b5bf53ce Make window size configurable. (#1210)
* Make window size configurable.
2017-05-05 13:26:56 -07:00
Adele Zhou 7ddf89f9b7 Fix doc 2017-05-04 10:30:28 -07:00
Menghan Li 277e90a432 Client load report for grpclb. (#1200) 2017-04-27 10:43:38 -07:00
Yuxuan Li ea230c713e update 2017-04-26 17:54:25 -07:00
Yuxuan Li 9c5f260e67 make max size a pointer type and initialize function a CallOption 2017-04-26 15:50:58 -07:00
Yuxuan Li 983d8372ea update the merge of client api and sc 2017-04-21 16:18:59 -07:00
Yuxuan Li bab6b617b7 merge master 2017-04-21 16:07:34 -07:00
Menghan Li 955c867061 Support proxy with dialer (#1098)
With this change, the default dialer checks environment variables to see if proxy is needed. If so, it dials to the proxy and does an HTTP CONNECT handshake.
2017-04-17 16:08:50 -07:00
Yuxuan Li 8788b75675 merge master resolve conflicts 2017-04-13 16:28:15 -07:00
MakMukhi bfa5dd27dc Client should update keepalive parameters upon receiving GoAway with … (#1169)
* Client should update keepalive parameters upon receiving GoAway with EnhanceYourCalm and debug data of too_many_pings.
2017-04-10 14:33:51 -07:00
Yuxuan Li 6f8b55318a fix the testMaxMsgSizeServerAPI failure 2017-04-06 14:08:04 -07:00
Yuxuan Li a66f9231a8 Make initial service config non-blocking in Dial() 2017-04-05 11:08:50 -07:00
Yuxuan Li ad16b942fb fix gofmt goimports go tool vet errors 2017-04-03 16:03:05 -07:00
Yuxuan Li a0b902a11d fix missing import 2017-04-03 15:29:39 -07:00
Yuxuan Li 13b5f120b0 merge master 2017-04-03 15:20:13 -07:00
Yuxuan Li 50d4175072 Add client and service side apis for limiting the send/recv msg size. Update MethodConfig struct 2017-04-03 15:03:24 -07:00
Menghan Li 0df08a7a03 :authority should include port number (#1123) 2017-03-28 11:09:23 -07:00
Menghan Li 14a6be430b Add grpc.Version string and use it in the UA (#1144) 2017-03-24 11:29:02 -07:00
dfawley c5a5dbc500 Don't return an error from dial if the balancer returns no initial servers (#1112)
This modifies the WithBlock behavior somewhat to block until there is at least
one valid connection.  Previously, each connection would be made serially until
all had completed successfully, with any errors returned to the caller.  Errors
are now only returned due to connecting to a backend if a balancer is not used,
or if there is an error starting the balancer itself.

Fixes #976
2017-03-21 11:35:53 -07:00
Mahak Mukhi 0e71619115 making client consistent with server 2017-03-09 17:48:37 -08:00
Mahak Mukhi a94b0948a3 Client should have a check on maximum size of received message size. 2017-03-09 16:58:23 -08:00
Mahak Mukhi 661dbbc817 conflict resolve 2017-03-06 13:19:09 -08:00
Doug Fawley 77204bfdf2 Add comment explaining why cancel is not called in success path after client transport is created 2017-03-03 16:46:26 -08:00
Mahak Mukhi bc3cca9945 Implementation changes;Using an independent goroutine for keepalive checks. 2017-02-28 11:49:51 -08:00
Mahak Mukhi 336b4ea3cf post review update 2017-02-10 16:47:43 -08:00
Chris Roche c7430a063e Only override :authority for insecure dials 2017-02-09 10:46:00 -08:00
Chris Roche 84bee50bda Add DialOption to overwrite :authority pseudo-header
The :authority pseudo-header for a gRPC Client defaults to the host
portion of the dialed target and can only be overwritten by providing a
TransportCredentials. However, there are cases where setting this header
independent of any tranport security is valid. In my particular case,
in order to leverage Envoy for request routing, the cluster/service name
must be provided in the :authority header. This may also be useful in a
testing context.

This patch adds a DialOption to overwrite the authority header,
even if TransportCredentials are provided (I'd imagine you'd only ever
need to specify one or the other).
2017-02-03 17:29:18 -08:00
Mahak Mukhi 0bdf059601 post review updates 2017-01-31 16:09:40 -08:00
Mahak Mukhi 5fcb58f02d post review updates 2017-01-30 11:32:54 -08:00
Mahak Mukhi e78a1f396d conflict resolve 2017-01-27 11:18:35 -08:00
Menghan Li cb653e4b61 Change stats APIs (#1030)
Change stats API from one static handler to one handler per server or client.
2017-01-09 17:11:32 -08:00
Mahak Mukhi 49d2a88c27 Comment formatting 2017-01-06 17:18:22 -08:00
Mahak Mukhi eeb6f5bade code cleaning 2017-01-06 16:52:37 -08:00
Qi Zhao 09aecb094e Add the initial service config support (#1009)
* Add the initial service config support

* start scWatcher later

* remove timeoutCh

* address the comments

* deal with dial timeout

* defer cancel for the newly created context for correct lifetime management

* fix the defer order

* added other 2 missing cancels
2016-12-19 16:31:00 -08:00
Mahak Mukhi 058907d033 refactored and rectified test failures 2016-11-18 13:55:04 -08:00
Mahak Mukhi e58450b5d3 Keepalive client-side implementation 2016-11-17 17:50:52 -08:00
Menghan Li c31bccc236 add FailOnNonTempDialError to control if gRPC should fail on non-temp dial error 2016-11-15 11:14:07 -08:00
Menghan Li df5d48b597 fix comments 2016-11-09 17:35:47 -08:00
Menghan Li 947e436ef4 return non temporary connection error if dialer returns non temprary errors 2016-11-09 17:25:46 -08:00
iamqizhao 2d5f9a12ea grpclb: Support DropRequest 2016-10-18 18:08:32 -07:00
iamqizhao 8930da46d0 grpclb: work with LoadBalanceToken 2016-10-13 16:54:33 -07:00
Menghan Li 1a79a7e346 Use creds.Clone in balancer.start 2016-09-27 17:36:19 -07:00
iamqizhao f02984b7c6 Basic support of grpclb 2016-09-19 15:11:57 -07:00
Zellyn Hunter a45515c6ca Log grpc.Address objects with %v, not %q
Structs should use %v; %q only makes sense for strings, chars, etc.
2016-09-12 15:09:10 -04:00
Menghan Li 74f7afb1f9 Move balancer initialization into a goroutine 2016-09-08 15:13:50 -07:00
Menghan Li a00cbfeab5 Overwrite authority if creds servername is specified 2016-09-06 11:23:30 -07:00
iamqizhao 61f62e0da6 Merge branch 'master' of https://github.com/grpc/grpc-go 2016-08-26 13:51:46 -07:00
iamqizhao 1e47e17230 Support client side interceptor 2016-08-26 13:50:38 -07:00
Tamir Duberstein dd5645bebf
Avoid goroutine leak in clientconn
Prior to this change, it was possible for `DialContext` to return
`(nil, err)` without properly closing the `ClientConn`, resulting in an
unavoidable leak of the `resetAddrConn` goroutine.
2016-08-25 17:02:43 -04:00
iamqizhao 6cc4c5785d refactor to simplify 2016-08-24 12:56:16 -07:00
iamqizhao 9dbd95fe38 make the test failure consistent 2016-08-24 11:02:18 -07:00
iamqizhao 7873a050d4 fix the test 2016-08-24 10:46:06 -07:00
iamqizhao 7eae19acb7 fix the issue 2016-08-23 19:23:04 -07:00
iamqizhao 60c350b0e9 Detach user-passed context (via DialContext(...)) with the context of ClientConn 2016-08-23 18:18:18 -07:00
Menghan Li f3ac95e6cd Check if cc.conns == nil before reading cc.conns 2016-08-18 16:43:58 -07:00
Qi Zhao 8a81ddda27 Merge pull request #831 from spencerkimball/spencerkimball/dial-with-context
Implement DialContext to afford caller option of managing cancelation
2016-08-17 11:18:27 -07:00
Menghan Li c72b08a774 Change errors returned by ac.wait() 2016-08-16 16:56:16 -07:00
Spencer Kimball b38541aeb0 Implement DialContext to afford caller option of managing cancelation 2016-08-16 16:57:59 -04:00
Menghan Li a9c8aebe90 Make non-failfast RPC get new transport instead of waiting 2016-08-12 13:03:09 -07:00
Tamir Duberstein 5e62f80ba8
resetTransport: log all transient errors when they occur
Previously, cancellation of the context would cause these transient
errors to be swallowed since the function would return before the
log line was reached.
2016-08-10 12:56:03 -04:00
Menghan Li a4587cd3f0 Fix review comments 2016-08-02 21:07:00 -07:00
Menghan Li fa5748afd3 Change error returned for transport not found 2016-08-01 16:01:16 -07:00
Menghan Li f6b46c1787 Fix errors after rebasing 2016-08-01 16:01:10 -07:00
Menghan Li d7d831d95e Do not create RoundRobin if balancer is not specified 2016-08-01 15:55:08 -07:00
Menghan Li 7c6eabc607 Make Dial() return original error 2016-08-01 15:55:08 -07:00
Menghan Li 1d0bea7943 Add addrConn tearDownError 2016-08-01 15:55:08 -07:00
Menghan Li e9e6ae6215 Make Dial() withblock error on bad certificates 2016-08-01 15:55:08 -07:00
Tamir Duberstein 5c7ed938f9
credentials: plumb cancellation into ClientHandshake
This is a minor breaking change to `TransportCredentials`, however
it should not be a problem in practice as not many users are using
custom implementations. In particular, users of `NewTLS` will not
be affected.

This change also replaces the earlier `Timeout` and `Cancel` fields
with a `context.Context`, which is plumbed all the way down from
`grpc.Dial`, laying the ground work for a user-provided context.

Also, support for Go 1.7 is added.
2016-08-01 16:29:56 -04:00
iamqizhao 21c5a43e47 fix a race condition causing http2Client.controller leaking 2016-08-01 11:51:20 -07:00
Menghan Li cbae5b1f01 Replace cc.newAddrConn with cc.resetAddrConn
When goaway is received by client, a new ac should replace the old ac.
Without this change, ac is removed first and a new one is added later,
ac.tearDown() and cc.newAddrConn are two functions called consecutively,
So there's a small chance that getTransport is called in between and
misses the new ac. After this change, the value in map conns is replaced
directly, and this issue should be resolved.
2016-07-29 16:03:53 -07:00
iamqizhao a09c6888cc fix another data race along with goaway 2016-07-28 19:47:38 -07:00
Menghan Li f255f72742 Merge pull request #784 from iamqizhao/race-fix
Fix a couple of races when goaway lives with connection shutdown.
2016-07-28 15:40:27 -07:00
Tamir Duberstein 096e703537
WithDialer doesn't support cancellation
This maintains cancellation for the default dialer, but external users
will have to opt in via a future API.
2016-07-28 17:00:23 -04:00
iamqizhao b128e7465a merge the conflict 2016-07-28 13:17:23 -07:00
iamqizhao cd4ca4d808 Tune transport Monitor, modify the test and add more comments 2016-07-28 11:07:42 -07:00
iamqizhao 1faf2ca61b fix the race on t.state 2016-07-27 19:46:34 -07:00
iamqizhao 63fcabeec5 some polish 2016-07-27 17:41:43 -07:00
iamqizhao 110450d45e fix races introduce by goaway 2016-07-27 17:27:10 -07:00
Tamir Duberstein 61f3f61ef0
cancel outgoing net.Dial when ClientConn is closed 2016-07-27 17:34:40 -04:00
Tamir Duberstein 2342e38669
test,transport: simplify 2016-07-27 17:20:55 -04:00
iamqizhao f1e4d3b180 allow multiple GoAways and retrying on illegal streams 2016-07-25 16:35:32 -07:00
iamqizhao 046e606dc5 clean up 2016-07-21 18:12:01 -07:00
iamqizhao 9ad4c58355 Make it work for streaming 2016-07-21 16:19:34 -07:00
iamqizhao 873cc272c2 support goaway 2016-07-20 18:48:49 -07:00
iamqizhao d2e79470cc client goaway support 2016-07-19 16:29:13 -07:00
iamqizhao f492622da4 rebase 2016-07-06 14:16:27 -07:00
Tamir Duberstein ebd9633b55
remove duplicate balancer field 2016-07-05 14:52:25 -04:00
iamqizhao be59d023f2 refactor error handling a bit 2016-06-29 15:21:44 -07:00
iamqizhao 213a20c4fe bug fix, typo fix and slight error refactoring 2016-06-28 16:08:19 -07:00
iamqizhao 01ef81a4d9 minor fix including removal of debugging logs, error code fix, etc. 2016-06-27 15:30:20 -07:00
iamqizhao 3e71fb360d Support fail-fast mode and make it the default 2016-06-27 14:36:59 -07:00
Qi Zhao 3efe7aef96 Merge pull request #713 from menghanl/split_authenticator_and_credentials
[API revision] Separate TransportAuthenticator and PerRPCCredentials
2016-06-09 14:57:55 -07:00
Menghan Li d9c8fb446d Change errCredentialsMisuse to errCredentialsConflict and errTransportCredentialsMissing 2016-06-08 13:53:41 -07:00
Menghan Li 59486d9c17 Rename TransportAuthenticator to TransportCredentials 2016-06-08 11:19:25 -07:00
Anthony Romano eada4fb145 clientconn: buffer waitC on Dial goroutine
Leaks a goroutine on dial timeout if unbuffered.
2016-06-07 15:47:54 -07:00
Menghan Li 3ffbd8e030 Rename Credentials to PerRPCCredentials 2016-06-06 17:28:10 -07:00
Menghan Li f0feaea314 Should be only one TransportAuthenticator 2016-06-06 16:35:41 -07:00
Menghan Li 6404c49192 Make TransportAuthenticator not embed Credentials 2016-06-06 16:24:46 -07:00
iamqizhao 3a6b72b858 add errNoAddr 2016-06-06 12:16:33 -07:00
iamqizhao 24a701cae7 revise the comments of WithTimeout 2016-06-06 12:13:00 -07:00
iamqizhao 404e9b67de dial time out 2016-06-06 12:08:11 -07:00
Dmitri Shuralyov e8316072cd Fix remaining instances of gRPC spelling.
According to http://www.grpc.io/faq/, the project is called gRPC. It's
already referred by that name in most places, except a few instances
where it's still "GRPC". Fix those to have consistency.
2016-06-02 18:00:07 -07:00
iamqizhao 2700f043b9 some small fixes 2016-06-01 14:09:21 -07:00
iamqizhao fca009f66f Fix some small comments 2016-05-26 15:11:33 -07:00
iamqizhao 817b48219c Fix a typo bug and handle stale addrConns 2016-05-26 14:20:31 -07:00
iamqizhao db887c9bcd rename controller 2016-05-25 18:17:23 -07:00
iamqizhao 9dc3da0633 make downErr for Balancer down closure 2016-05-25 11:28:45 -07:00
iamqizhao 0b1df3bca2 add BalancerGetOption 2016-05-24 17:19:44 -07:00
iamqizhao 5b484e4099 add Notify API; move the name resolving into Balancer 2016-05-23 19:25:01 -07:00
iamqizhao 5d62215b41 some minor fixes 2016-05-18 16:26:12 -07:00
iamqizhao 162d8d2d33 Tune Invoke behavior for the new Balancer. 2016-05-18 11:18:10 -07:00
iamqizhao e9e748b978 small fix and more comments 2016-05-17 17:18:54 -07:00
iamqizhao 65969fb499 lock optimization 2016-05-16 19:19:35 -07:00
iamqizhao 73ff8375a6 Remove debugging logs and add license. 2016-05-16 15:47:46 -07:00
iamqizhao aa532d5baf Fix some issues and remove garbbage files 2016-05-16 15:31:00 -07:00
iamqizhao 31ef3ef957 some touchups 2016-05-13 15:08:09 -07:00
iamqizhao f4b89fe44f some fixes 2016-05-13 13:27:35 -07:00
iamqizhao e3351672ba complete some unfinished error 2016-05-13 13:26:36 -07:00
iamqizhao 32eec1acef add comments 2016-05-12 18:52:24 -07:00
iamqizhao f93b6bbfb5 Merge branch 'master' of https://github.com/grpc/grpc-go 2016-05-12 17:43:51 -07:00
iamqizhao a1b60d7b43 Add the tests for balancer and resolver 2016-05-12 17:01:58 -07:00
Anthony Romano 46f2afd293 Interrupt retry Sleep() on client connection shutdown
Otherwise transportMonitor hangs around long enough after Close() that it
looks like a goroutine leak.
2016-05-12 13:14:22 -07:00
iamqizhao 19ded23951 graceful close and test 2016-05-10 19:29:44 -07:00
iamqizhao 9c2d8546bf load balancer 2016-05-06 15:47:09 -07:00
iamqizhao 9cec19a4d4 make setDefault(...) non-member function 2016-04-18 13:15:27 -07:00
Stephen J Day 8ef1dcabab backoff: make DefaultBackoffConfig a concrete value
To enforce immutability of the `DefaultBackoffConfig`, we've made it a
concrete value. While fields can still be set directly on the value,
taking a copy will not incidentally pull a reference to the variable.

Signed-off-by: Stephen J Day <stephen.day@docker.com>
2016-04-18 11:33:39 -07:00
Stephen J Day 9ff38e9093 backoff: set default values on BackoffConfig
Because most of the fields on `BackoffConfig` are unexported, correctly
using the config requires copying from the default. This sets the
defaults appropriately and falls back to a default if MaxDelay is
negative or zero.

Tests are added to ensure that the backoff is set correctly in common
use cases.

Signedroff-by: Stephen J Day <stephen.day@docker.com>
Signed-off-by: Stephen J Day <stephen.day@docker.com>
2016-04-15 16:12:47 -07:00
Qi Zhao d07d0562ff Merge pull request #601 from stevvooe/backoff-strategy
backoff: allow configuration of backoff strategy
2016-04-11 10:32:33 -07:00
Stephen J Day 47b74a63a8 backoff: allow configuration of backoff strategy
The backoff function and parameters have been pulled up into an
interface `backoffStrategy`. The default parameters are now part of a
package variable `DefaultBackoffConfig`. The strategy is then plumbed
through `dialOptions`. As a result of this PR, the
maximum backoff delay can now be set using the `WithBackoffConfig` dial
option.

While the addition of strategy may seem premature, this allows one to
simply export `BackoffStrategy` and `WithBackoff` to allow arbirarily
configurable backoff strategies.

Signed-off-by: Stephen J Day <stephen.day@docker.com>
2016-04-07 20:17:57 -07:00
Tamir Duberstein 2a118f74a2 minor cleanup: simplify looping 2016-03-31 22:05:49 -04:00
Victor Vieux 047af78181 fix a few typos 2016-03-16 16:40:16 -07:00
iamqizhao 0be94ab3f5 fix a race between transport creation and wait returning 2016-02-22 16:26:15 -08:00
iamqizhao af8888dc8d remove Compressor/DecompressorGenerator 2016-01-29 14:38:20 -08:00
iamqizhao 61d7c39d4c comments and gofmt 2016-01-25 11:18:41 -08:00
iamqizhao da3bb0c9f7 Support compression 2016-01-22 18:21:41 -08:00
iamqizhao c1330e18aa some missing comments 2016-01-07 14:18:20 -08:00
iamqizhao f0ee5628a9 add more comments 2015-12-14 14:43:21 -08:00
iamqizhao 758cf3083a add comments to NotifyReset 2015-12-14 14:40:21 -08:00
iamqizhao 330d8f958c i) revise picker API and channel state API; ii) add unicastNamingPicker which supports custom name resolving. 2015-12-14 14:32:43 -08:00
Daniel Kwasnick 0fd544f256 Fix cc.Close() state race
Fix a race condition in which a Conn's state is set to TransientFailure after Close() has been invoked – Close() should irrevocably set state to Shutdown.
2015-11-10 14:02:38 -08:00
iamqizhao c0d1abc00e fix a comment 2015-10-08 14:22:00 -07:00
iamqizhao 390cd42894 revise Picker API 2015-10-08 11:05:59 -07:00
iamqizhao ec8414396c bug fix: stop busy wait on new transport 2015-10-08 09:09:06 -07:00
iamqizhao 9a7e50e3d9 remove unnecessary go statement 2015-10-02 16:04:55 -07:00
iamqizhao c01ea6e359 revise Picker API 2015-09-29 10:24:03 -07:00
iamqizhao 2899844430 fix a typo 2015-09-25 13:38:17 -07:00
iamqizhao 23fea5c44a comments 2015-09-25 13:32:35 -07:00
iamqizhao ec99a32572 redesign the API 2015-09-25 13:21:25 -07:00
iamqizhao ffbdf88f0f add more comments 2015-09-24 10:36:56 -07:00
iamqizhao 9afcd0c697 preliminary refactoring for custom naming and load balancing 2015-09-23 19:09:37 -07:00
Sameer Ajmani 980b4c6d05 grpc: restore changes after sync
Change-Id: I97f0c77f95086301202d0fe4ca477ae6e22dd0b5
2015-09-23 15:18:41 -04:00
iamqizhao e6b603d375 a bit clean up 2015-09-22 19:01:33 -07:00
iamqizhao ecf8201c7c remove a dead member var 2015-09-22 16:12:42 -07:00
iamqizhao dd992b3748 remove transportSeq 2015-09-21 18:17:49 -07:00
iamqizhao 804293ac57 Fix a reconnecting bug 2015-09-15 11:20:16 -07:00
Jeff Hodges b1c6afbc7f s/stated/started/ in Shutdown doc 2015-09-06 21:26:27 -07:00
iamqizhao 9ba820ef6a add tests 2015-08-28 13:50:04 -07:00
iamqizhao 87c361b5a5 check transport security when using oauth2-based credentials 2015-08-28 13:19:36 -07:00
iamqizhao 3b3b9b52cc polish 2015-08-27 22:03:38 -07:00