3081 Commits

Author SHA1 Message Date
451cf373a7 add MAINTAINERS.md (#2971) 2019-08-16 15:27:54 -07:00
c26cd97e18 transport: make http2Client.getStream() to only return a stream. (#2984)
Suggested in https://github.com/grpc/grpc-go/pull/2980.
2019-08-16 11:25:09 -07:00
030824531b transport: remove defer in http2Client.getStream (#2980) 2019-08-15 11:50:32 -07:00
24a4d6eb88 Change version to 1.24.0-dev (#2974) 2019-08-13 15:49:38 -07:00
ee21c923a2 transport: block reading frames when too many transport control frames are queued (#2970)
Addresses CVE-2019-9512 (Ping Flood), CVE-2019-9514 (Reset Flood), and CVE-2019-9515 (Settings Flood).
2019-08-13 10:52:26 -07:00
ee87494b1f transport: fix race between header and RPC cancellation (#2947) 2019-08-12 08:51:22 -07:00
b8d2675446 wrr: add EDF implementation of weighted round robin. (#2957) 2019-08-09 10:19:17 -07:00
a074ab2dcf internal: fix a typo. (#2964) 2019-08-09 10:02:03 -07:00
36ddeccf18 Move code out of balancer/xds. (#2950)
We will have a root level xds/ directory which will eventually contain
all xDS implementation including balancer, resolver, client etc.

The new structure looks something like this:

grpc/
|
+--xds/
    |
    +--internal/
    |  |
    |  +--balancer/
    |     |
    |     +--edsbalancer/
    |     |
    |     +--lrs/
    |     |
    |     +--orca/
    |
    +--experimental/

Users need to import grpc/xds/experimental package to get all xds
functionality, and this will eventually be moved to grpc/xds.

Also, moved grpc/balancer/internal/wrr to grpc/internal/wrr.
2019-08-07 14:46:10 -07:00
fde0cae1c4 stream: call stats handler if the attempt failed to get transport (#2962) 2019-08-07 13:22:33 -07:00
cd5357d62e Change Unlock to defer Unlock, to avoid data race (#2953) 2019-08-07 12:57:49 -07:00
1f154c6e18 stream: fix panic caused by failing to get a transport for a retry attempt (#2958) 2019-08-06 15:36:33 -07:00
a2bdfb40ff balancer: populate endpoint weight by edsbalancer for weighted_round_robin (#2945) 2019-08-06 09:34:46 -07:00
92635fa6bf server: avoid call to trace.FromContext and resulting allocations when tracing is disabled (#2926) 2019-07-30 10:14:53 -07:00
a4f24690a4 internal: log when connection is closed due to keepalive (#2940) 2019-07-29 14:33:10 -07:00
120728e1f7 client: log balancer info messages only for verbosity level >=2 (#2908)
The pickfirstBalancer and baseBalancer are logging a lot of messages under normal operation.  Those messages can not be associated to a server connection because no connection address is part of the messages. They are messages that are only useful when debugging issues.

Only log them when the verbose level is at least 2, to reduce the amount of log messages under normal operation.
2019-07-25 13:25:20 -07:00
6d6c0413c7 test: fix race reading while incrementing (#2935)
Swap the `<-done` and `if numConns < 2` to make sure `numConns++` happens before read
2019-07-25 10:54:14 -07:00
b5748caae7 server: populate WireLength on stats.InPayload for unary RPCs (#2932)
Fixes #2692 which was incompletely fixed by #2711.

Also adds updates stats/stat_test.go to sanity check WireLength.
2019-07-24 16:24:45 -07:00
61f27c1415 status: Implement *statusError.Is (#2868) 2019-07-24 14:40:29 -07:00
5da5b1f225 status: avoid allocations when returning an OK status (#2929) 2019-07-24 10:57:23 -07:00
decb43806d http2client: remove unnecessary allocations for header fields (#2925) 2019-07-24 10:32:39 -07:00
977142214c client: fix race between transport draining and new RPCs (#2919)
Before these fixes, it was possible to see errors on new RPCs after a
connection began draining, and before establishing a new connection.  There is
an inherent race between choosing a SubConn and attempting to creating a stream
on it.  We should be able to avoid application-visible RPC errors due to this
with transparent retry.  However, several bugs were preventing this from
working correctly:

1. Non-wait-for-ready RPCs were skipping transparent retry, though the retry
design calls for retrying them.

2. The transport closed itself (and would consequently error new RPCs) before
notifying the SubConn that it was draining.

3. The SubConn wasn't synchronously updating itself once it was notified about
the closing or draining state.

4. The SubConn would go into the TRANSIENT_FAILURE state instantaneously,
causing RPCs to fail instead of queue.
2019-07-22 16:07:55 -07:00
a975db9349 grpclb: enable keepalive (#2918)
So grpclb client will reconnect when the connection is down (e.g. proxy
drops the server side connection but keeps the client side).
2019-07-22 12:44:59 -07:00
c654cab129 server: avoid allocations related to tracking excessive pings (#2923) 2019-07-22 09:56:26 -07:00
04c71b7aac server: avoid an unnecessary allocation per-RPC for OK status (#2920) 2019-07-22 09:53:08 -07:00
207b5d8038 xds: instructions for regenerating proto (#2898) 2019-07-18 13:52:50 -07:00
f7de2c8d62 balancer: filter out grpclb addresses if balancer is not grpclb (#2907) 2019-07-17 15:08:56 -07:00
64ddb19a93 client: fix canceled vs deadline exceeded double-check logic (#2906) 2019-07-16 09:41:37 -07:00
24b2fb8959 client: remove option to send RPCs before HTTP/2 handshake is completed (#2904) 2019-07-12 13:37:27 -07:00
59fd1f3d41 server: immediately close all connections created after GracefulStop (#2903)
Internal cleanup: replace quit/quitOnce/done/doneOnce with grpcsync.Events.
2019-07-12 13:14:19 -07:00
12906490e0 docs: clarify "deprecated" to indicate whether some features may be removed in 1.x (#2900)
Also, deprecate WithBalancerName (was experimental).

The decision of whether something may be removed is based on if it was marked experimental as of v1.0/GA or upon its introduction, in accordance with Documentation/versioning.md.
2019-07-11 14:05:18 -07:00
08d23162a9 grpclb: recreate SubConns when switching fallback (#2899)
With pickfirst, the same SubConn is reused, only addresses are updated.
But backends and fallbacks may need different credentials. This change
force-removes all SubConns when switching fallback.
2019-07-10 13:56:55 -07:00
8e511dc15f xds: update proto (#2896) 2019-07-08 16:47:29 -07:00
005a2997ef Change version to 1.23.0-dev (#2893) 2019-07-03 09:06:53 -07:00
73b304d882 xds: bazel proto gen code generation scripts (#2775) 2019-06-27 15:18:59 -07:00
95da23bbf9 xds: load report for server loads (from trailer) (#2870) 2019-06-26 12:49:37 -07:00
5caf962939 client: addrConn NewStream and health check cleanup (#2848) 2019-06-26 11:15:17 -07:00
915d20dcdb grpc: change type of Server.conns
Change Server.conns from a map[io.Closer]bool to a map[transport.ServerTransport]bool.
2019-06-26 11:09:45 -07:00
7472edcc1e metadata: write original md before appended md (#2879) 2019-06-25 10:34:12 -07:00
70e8b38052 test: end2end test improvements separate server and client configs. (#2877)
- Seperated and documented the options for client and server sides.
- Better support for multiple grpc.Servers. This will be used in other
  improvements that I have in the works.
- Moved some common functionality from channelz_test.go to
  end2end_test.go.
- Added an option to use the default health service implementation, instead
 of each test creating a new health.Server and passing it in. The
 inidividual tests have not been changed in this PR. I will do that in a
 follow up PR to keep the changes to a reasonable size.
- Fixed one of the tests which had to be fixed because of the separation
  of client and server configs.
2019-06-24 14:53:45 -07:00
e8b58ff637 [xds_ignore_weight_0_localities] xds: ignore localities with weight 0 (#2875)
Locality weighted load balancer can be enabled by setting an option in
CDS, and the weight of each locality. Currently, without the guarantee
that CDS is always sent, we assume locality weighted load balance is
always enabled, and ignore all weight 0 localities.
In the future, we should look at the config in CDS response and decide
whether locality weight matters.
2019-06-24 09:40:15 -07:00
43c0599b22 test: fix flaky grpclb TestDropRequest (#2865) 2019-06-24 09:38:28 -07:00
ecb921ddb9 test: end2end test cleanup http handler server (#2876)
* end2end test cleanup #1

- Removed some old code which has a TODO asking for it's removal once
  Go1.6 and Go1.7 support is gone.
- Cleaned up a couple of error messages along with it.
2019-06-20 15:35:55 -07:00
eca11cb9e4 transport: share recv buffers (#2813)
transport: share recv buffers
2019-06-20 15:01:58 -07:00
712624e686 examples: note about ALTS special access permission on GCP (#2846) 2019-06-20 13:39:07 -07:00
f7e18a395d examples: fixed spelling mistake in route_guide client example (#2873) 2019-06-19 10:24:51 -07:00
7a12d52f3b internal: update channelz.pb.go (#2871)
A comment change.
2019-06-18 16:20:48 -07:00
fc15416d24 test: fix GoAwayThenClose by wait for cc state change (#2855)
In the end of the test, 10 RPCs are made to make sure data is sent to
the second server. The first RPC of these 10 is made right after the
second server's listener receives a connection. But at this time, the
connectivity state on the client side is not set to READY yet (though
ac's state should be either connecting or ready, the race between ac
and balancer could cause cc to still be in transient failure). So the
first RPC fails due to transient failure, but the following 9 will
succeed.
2019-06-13 15:57:55 -07:00
c7831546a1 test: extend RPC timeout for TestHTTPHeaderFrameErrorHandlingHTTPMode (#2861)
This test sometimes fails with error creating stream due to
DeadlineExceeded. It's very hard to reproduce (failed twice in 100000
runs). Extend the RPC timeout in case it's too short.
2019-06-13 15:29:28 -07:00
684ef04609 Fix a typo in the comment. (#2866)
I was trying to run this test and I had copied the name of the function
from the comment, and it took a good while to figure out why
`go test -run` was returning `testing: warning: no tests to run`.
2019-06-12 15:56:39 -07:00