Commit Graph

2961 Commits

Author SHA1 Message Date
David Zbarsky decb43806d http2client: remove unnecessary allocations for header fields (#2925) 2019-07-24 10:32:39 -07:00
Doug Fawley 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
Menghan Li 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
David Zbarsky c654cab129 server: avoid allocations related to tracking excessive pings (#2923) 2019-07-22 09:56:26 -07:00
David Zbarsky 04c71b7aac server: avoid an unnecessary allocation per-RPC for OK status (#2920) 2019-07-22 09:53:08 -07:00
Menghan Li 207b5d8038
xds: instructions for regenerating proto (#2898) 2019-07-18 13:52:50 -07:00
Menghan Li f7de2c8d62
balancer: filter out grpclb addresses if balancer is not grpclb (#2907) 2019-07-17 15:08:56 -07:00
Doug Fawley 64ddb19a93
client: fix canceled vs deadline exceeded double-check logic (#2906) 2019-07-16 09:41:37 -07:00
Doug Fawley 24b2fb8959
client: remove option to send RPCs before HTTP/2 handshake is completed (#2904) 2019-07-12 13:37:27 -07:00
Doug Fawley 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
Doug Fawley 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
Menghan Li 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
Menghan Li 8e511dc15f
xds: update proto (#2896) 2019-07-08 16:47:29 -07:00
Doug Fawley 005a2997ef
Change version to 1.23.0-dev (#2893) 2019-07-03 09:06:53 -07:00
lyuxuan 73b304d882
xds: bazel proto gen code generation scripts (#2775) 2019-06-27 15:18:59 -07:00
Menghan Li 95da23bbf9
xds: load report for server loads (from trailer) (#2870) 2019-06-26 12:49:37 -07:00
Menghan Li 5caf962939
client: addrConn NewStream and health check cleanup (#2848) 2019-06-26 11:15:17 -07:00
Can Guler 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
Yongzheng Lai 7472edcc1e metadata: write original md before appended md (#2879) 2019-06-25 10:34:12 -07:00
Easwar Swaminathan 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
Menghan Li 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
Menghan Li 43c0599b22
test: fix flaky grpclb TestDropRequest (#2865) 2019-06-24 09:38:28 -07:00
Easwar Swaminathan 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
Can Guler eca11cb9e4
transport: share recv buffers (#2813)
transport: share recv buffers
2019-06-20 15:01:58 -07:00
lyuxuan 712624e686
examples: note about ALTS special access permission on GCP (#2846) 2019-06-20 13:39:07 -07:00
jbpratt f7e18a395d examples: fixed spelling mistake in route_guide client example (#2873) 2019-06-19 10:24:51 -07:00
Menghan Li 7a12d52f3b
internal: update channelz.pb.go (#2871)
A comment change.
2019-06-18 16:20:48 -07:00
Menghan Li 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
Menghan Li 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
Easwar Swaminathan 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
Menghan Li cd89eaf40e
test: fix Test/GracefulStop by not removing activeStreams too aggresivelly (#2857)
Before this fix, stream is removed from activeStreams in finishStream,
which happens when the service handler returns status, without waiting
for the status to be sent by loopyWriter. If GracefulStop() is called in
between, it will close the connection (because activeStreams is empty),
which causes the RPC to fail with "transport is closing". This change
moves the activeStreams cleanup into loopyWriter, after sending status
on wire.
2019-06-12 10:26:18 -07:00
Doug Fawley a1d4c283c6
client: update state earlier to prevent resetTransport calls from killing good transports (#2862) 2019-06-10 16:58:43 -07:00
Easwar Swaminathan a5396fd45c
Remove call to proto.Clone() in http2Server.WriteStatus. (#2842)
* Expose a method from the internal package to get to the raw
  StatusProto wrapped by the status error, and use it from
  http2Server.WriteStatus().
* Add a helper method in internal/testutils to compare two status errors
  and update test code to use that instead of reflect.DeepEqual()
2019-06-10 15:03:12 -07:00
Easwar Swaminathan b681a11d08
A few more improvements to the benchmark code. (#2840)
* A few more improvements to the benchmark code.

* In benchmain/main.go:
  * Define types for function arguments to make code more readable
  * Significantly simplify the code as a result of stats package refactor.
* In benchresult/main.go
  * Simplify code as a result of stats package refactor.
* In stats/stats.go
  * Define and expose featureIndex enum.
  * Refactor the types used to store features, results, stats etc.
  * Provide easy to use methods to add/modify/read/dump stats info.
* Delete stats/util.go - dead code.
2019-06-10 09:53:35 -07:00
Doug Fawley f2967c2f83
serviceconfig: mark new package experimental (#2852) 2019-06-06 13:39:47 -07:00
Menghan Li d33cecdadd
xds: fix difference between user target name and resource name (#2845) 2019-06-05 10:52:48 -07:00
Menghan Li 914c27f822 internal: ignore unexported fields when comparing struct fields (#2853) 2019-06-05 09:54:21 -07:00
Menghan Li 2df9cb80d4
xds: rpc counts (start/end) per locality (#2805) 2019-06-04 12:47:23 -07:00
Doug Fawley 73e5679828
travis: run most test environments on Go 1.12 instead of 1.11 (#2847) 2019-06-04 11:19:23 -07:00
Menghan Li 532a0b98cb
only force update picker when cache is used (sub-balancer is round-robin) (#2843) 2019-06-03 10:43:53 -07:00
Doug Fawley 99aff99e53 xds: rename balancer to xds_experimental during testing (#2850) 2019-06-03 10:08:20 -07:00
Menghan Li a69f97005b
internal: lint receiver name not x (#2844) 2019-05-30 16:20:18 -07:00
Menghan Li 82fdf27702
addrConn: not reset backoff if update address in TransientFailure (#2740) 2019-05-30 13:13:47 -07:00
Menghan Li 58c136ca0f
[xds_112] internal: balancer/xds remove build contrain >= 1.12 (#2834)
This reverts commit b03f6fd5e3.
2019-05-30 13:08:45 -07:00
Doug Fawley d40a995895
balancer/resolver: add loadBalancingConfig and pre-parsing support (#2732) 2019-05-30 09:12:58 -07:00
Menghan Li 0435a4bb26
balancer: stop using picker from old balancer with switching balancers (#2833) 2019-05-29 10:35:14 -07:00
Menghan Li b3e4b49ddb
xds: fix eds balancer nil pointer panic without addresses (#2809) 2019-05-28 11:14:10 -07:00
Menghan Li f34abd9513
xds: add orca generated file, and move orca to xds folder (#2804) 2019-05-24 12:35:57 -07:00
Doug Fawley b7325a3150
Update go.mod for golang/x/tools and staticcheck (#2832) 2019-05-24 11:13:46 -07:00
Can Guler 25ad15b871
transport: Fix the inconsistency between headerChan and headerDone (#2818)
transport: Fix the inconsistency between headerChan and headerDone
2019-05-22 14:02:23 -07:00