Commit Graph

698 Commits

Author SHA1 Message Date
Ed Warnicke b186ee8975
test/bufconn: add Listener.DialContext(context.Context) (#4763) 2021-09-16 07:59:36 -07:00
Zach Reyes c84a5de064
transport/server: add :method POST to incoming metadata (#4770)
* transport/server: add :method POST to incoming metadata
2021-09-15 17:02:08 -04:00
Doug Fawley d41f21ca05
stats: support stats for all retry attempts; support transparent retry (#4749) 2021-09-14 15:11:42 -07:00
Doug Fawley d25e31e741
client: fix case where GOAWAY would leak connections and memory (#4755) 2021-09-10 14:12:13 -07:00
Doug Fawley a6a63177ae
xds: add retry support (#4738) 2021-09-08 10:00:44 -07:00
Lidi Zheng f7d66b5846
Change to a non-workload-identity GKE cluster (#4723) 2021-08-31 13:42:43 -07:00
Doug Fawley d074cae66b
github: fold security tests into 'tests'; update testing to 1.17-1.15 (#4708) 2021-08-26 11:21:36 -07:00
Easwar Swaminathan 6bd8e8cf30
multiple: remove support for Go 1.11 (#4700) 2021-08-24 14:24:34 -07:00
Easwar Swaminathan 46ab723bb2
multiple: remove appengine specific build constraints and code (#4685) 2021-08-24 12:30:13 -07:00
Easwar Swaminathan 45a623cbef
test: use non blocking dials in end2end_test (#4687) 2021-08-24 10:02:55 -07:00
Doug Fawley 8ab16ef276
balancer: add ExitIdle optional interface (#4673) 2021-08-18 15:04:35 -07:00
Lidi Zheng 88dc96b463
Copy the tag_and_push_docker_image method to grpc-go (#4667) 2021-08-11 14:33:44 -07:00
Lidi Zheng c7c1e9e0ec
Update xDS client/server image per-branch tag after build (#4661) 2021-08-10 20:31:26 -07:00
Doug Fawley 997ce619eb
clientconn: do not automatically reconnect addrConns; go idle instead (#4613) 2021-08-10 13:22:34 -07:00
Zach Reyes 01bababd83
Added connection to transport context (#4649)
* Added connection to transport context
2021-08-09 23:15:57 -04:00
Lidi Zheng 00edd8c13a
Add xDS k8s url-map test Kokoro job (#4614) 2021-07-26 13:02:56 -07:00
John Howard 0103ea2d6c
client: improve GOAWAY debug messages (#4587) 2021-07-14 13:59:50 -07:00
James Protzman ba41bbac22
transport: validate http 200 status for responses (#4474) 2021-07-14 10:54:58 -07:00
Zach Reyes b9270c3a7f
client: add deadline for TransportCredentials handshaker (#4559)
* Add deadline on connection for TransportCredentials handshake
2021-06-23 16:36:24 -04:00
Sergii Tkachenko 50328cf800
buildscripts: add option to use xds-k8s test driver from a fork (#4548) 2021-06-21 12:11:57 -07:00
Easwar Swaminathan 2de42fcbbc
kokoro: Specify the correct path to the build config (#4495) 2021-05-26 15:35:27 -07:00
Easwar Swaminathan bbb542c3d9
Kokoro build configs for PSM security interop tests (#4481) 2021-05-25 15:46:02 -07:00
Easwar Swaminathan 728364accf
server: return UNIMPLEMENTED on receipt of malformed method name (#4464) 2021-05-24 17:30:40 -07:00
Ehsan Afzali a8e85e0d57
server: allow PreparedMsgs to work for server streams (#3480) 2021-05-21 15:54:24 -07:00
Doug Fawley 84d0920b59
transport: unblock read throttling when controlbuf exits (#4447) 2021-05-19 11:05:26 -07:00
Doug Fawley 62adda2ece
client: fix ForceCodec to set content-type header appropriately (#4401) 2021-05-11 17:05:16 -07:00
Doug Fawley 328b1d171a
transport: allow InTapHandle to return status errors (#4365) 2021-05-07 14:37:52 -07:00
Menghan Li 0ab423af82
test: fix flaky GoAwayThenClose (#4394)
In this test, we
1. make a streaming RPC on a connection
1. graceful stop it to send a GOAWAY
1. hard stop it, so the client will create a connection to another server

Before this fix, 2 and 3 can happen too soon, so the RPC in 1 would fail
and then transparent retry (because the stream is unprocessed by the
server in that case).

This retry attempt could pick the new connection, and then the RPC would
block until timeout.

After this streaming RPC fails, we make unary RPCs with the same
deadline (note: deadline not timeout) as the streaming RPC and expect
them to succeed. But they will also fail due to timeout.

The fix is to make a round-trip on the streaming RPC first, to make sure
it actually goes on the first connection.
2021-05-07 11:55:48 -07:00
Mikhail Mazurskiy d2d6bdae07
server: add ForceServerCodec() to set a custom encoding.Codec on the server (#4205) 2021-05-06 09:40:54 -07:00
Lidi Zheng d426aa5f2e
test: extend the xDS interop tests timeout to 360 mins (#4380) 2021-05-05 13:37:13 -07:00
apolcyn 9572fd6fae
client: include details about GOAWAYs in status messages (#4316) 2021-04-23 17:26:26 -07:00
Lidi Zheng 6f35bbbfb8
test: enable xDS CSDS test (#4354) 2021-04-21 17:27:51 -07:00
Zach Reyes 1c598a11a4
Move exponential backoff to DNS resolver from resolver.ClientConn (#4270) 2021-04-20 13:20:09 -04:00
lzhfromustc 41676e61b1
Fix goroutine leaks (#4214) 2021-04-19 09:49:37 -07:00
apolcyn c229922995
client: propagate connection error causes to RPC statuses (#4311) 2021-04-13 13:06:05 -07:00
Aliaksandr Mianzhynski d6abfb4598
cmd/protoc-gen-go-grpc: add protoc and protoc-gen-go-grpc versions to top comment (#4313) 2021-04-09 16:30:59 -07:00
Menghan Li c7a203dcb5
xds/interop: move header/path matching to all (#4325) 2021-04-08 14:31:20 -07:00
ZhenLian 5730f8d113
Invoke Go Vet Check in Sub-modules (#4302)
* Invoke Go Vet Check in Sub-modules
2021-04-02 11:19:22 -07:00
Doug Fawley f320c79349
test: enable fault_injection xds test (#4283) 2021-03-22 09:42:11 -07:00
Doug Fawley 425d405f39
test: add timeout to regular xds test runs (#4201) 2021-02-12 14:24:30 -08:00
Menghan Li b753f4903c
xds testing: increase timeout from 90 minutes to 120 minutes (#4191)
This is the timeout for all the tests, after which the VM will be termiated.
Since now we have more tests, we need more time.

The current average is around 85-90 minutes. The extra 30 minutes should be
enough for several new tests.
2021-02-04 20:13:54 -08:00
ZHANG Dapeng 7f2581f910
xds interop: add xds v3 kokoro tests (#4165) 2021-01-20 17:24:22 -08:00
Easwar Swaminathan f579b61a69
test: Run e2e authority tests only on linux. (#4160)
Although darwin supports UDS, these tests need some non-trivial amount
of work to get them to pass on darwin. This build constraint will make a
top-level `go test` happy on darwin.
2021-01-19 18:00:32 -08:00
Doug Fawley 938f6e2f75
cmd/protoc-gen-go-grpc: add gRPC-Go version comment and update release version (#4152) 2021-01-14 14:28:25 -08:00
Menghan Li fb40d83340
xds interop: turn on circuit breaking test (#4144)
Also need to set server image to version 3, so that the server blocks the
pending RPCs
2021-01-08 17:16:38 -08:00
Edmond 39a500abb9
support unix-abstract schema (#4079) 2020-12-22 08:56:49 -08:00
Doug Fawley 750abe8f95
resolver: allow config selector to return an RPC error (#4082) 2020-12-08 13:32:37 -08:00
Doug Fawley 0d6a24f68a
test: move stubServer to separate package in internal (#4081) 2020-12-04 15:56:07 -08:00
Garrett Gutierrez c456688b18
client: fix "unix" scheme handling for some corner cases (#4021) 2020-11-30 10:04:47 -08:00
Edmond 8f3cc6cc26
protoc-gen-go-grpc: export grpc.ServiceDesc (#4035) 2020-11-23 14:56:57 -08:00
Menghan Li 78864797b8
balancer: set RPC metadata in address attributes, instead of Metadata field (#4041)
This metadata will be sent with all RPCs on the created SubConn
2020-11-18 17:12:51 -08:00
Doug Fawley b88744b832
xds: add ConfigSelector to support RouteAction timeouts (#3991) 2020-11-17 13:22:28 -08:00
Timothy Gu 20636e76a9
protobuf: update protoc to latest version (#4038)
Presently, protoc 3.3.0 (released in 2017) is still being used. This
commit updates the vet.sh script as well as existing generated files to
use protoc 3.14.0 instead.

The only concrete change this brings is updated import paths of
Timestamp and Duration types. However, in practice this is a no-op,
since the types themselves are already aliased to the new import path:

- https://pkg.go.dev/github.com/golang/protobuf@v1.4.3/ptypes/duration#Duration
- https://pkg.go.dev/github.com/golang/protobuf@v1.4.3/ptypes/timestamp#Timestamp
2020-11-16 16:59:46 -08:00
Menghan Li 707e298f55
internal: fix net.Dial fail without IP (#4037) 2020-11-16 14:34:08 -08:00
Garrett Gutierrez 90f1b3ee83
client: use "localhost:port" as authority if target is ":port" (#4017) 2020-11-12 13:52:55 -08:00
yihuaz aeb04798c5
credentials: fix PerRPCCredentials w/RequireTransportSecurity and security levels (#3995) 2020-11-09 15:33:53 -08:00
Gaurav Gahlot d7a7a304ff
testing: Avoid using context.Background (#3949) 2020-11-05 09:25:17 -08:00
Doug Fawley 4e8458e5c6
protobuf: update all generated code to google.golang.org/protobuf (#3932) 2020-10-21 16:05:44 -07:00
Easwar Swaminathan 8153ecea73
credentials/insecure: Implement insecure credentials. (#3964) 2020-10-21 15:07:37 -07:00
Doug Fawley 9519efffeb
cmd/protoc-gen-go-grpc: use grpc.ServiceRegistrar instead of *grpc.Server (#3968) 2020-10-20 13:02:25 -07:00
Garrett Gutierrez 4be647f7f6
internal/resolver/unix: Implemented unix resolver. (#3890) 2020-10-16 11:52:54 -07:00
Doug Fawley 02cd07d9bb
cmd/protoc-gen-go-grpc: revert to interface-based service registration (#3911) 2020-09-29 15:17:06 -07:00
Doug Fawley ff9dd65c90
protoc-gen-go-grpc: generate interfaces optionally; remove NewFooService (#3876) 2020-09-16 10:15:56 -07:00
Doug Fawley 15157e2664
test: remove funcServer and some uses of NewTestServiceService (#3867) 2020-09-09 13:23:46 -07:00
Doug Fawley d31b671000
cmd/protoc-gen-go-grpc: call interceptor even if handler is unset (#3849) 2020-08-26 16:05:36 -07:00
Garrett Gutierrez ff1fc890e4
internal: reintroduce legacy appengine build constraints (#3838) 2020-08-25 13:49:57 -07:00
Doug Fawley 44d73dff99
cmd/protoc-gen-go-grpc: rework service registration (#3828) 2020-08-25 09:28:01 -07:00
Garrett Gutierrez b9bc8e75a6
End stream flag bugfix (#3803) 2020-08-21 14:22:17 -07:00
Menghan Li 8beeedb8b1
internal: clean up all usages of grpclog, and replace with component (#3719) 2020-08-06 13:19:17 -07:00
Easwar Swaminathan fd393c8989
testdata: Update testdata certs. (#3786)
* This will be used in certprovider tests where we would want more than one server and client certs.
* Also, updated existing usages of these certs to point to the new  files.
* Also copy over the required certs/key files. This avoids the example gomodule from depending on gRPC testdata package which should be able to change independently.
* Fix interop test's SAN.
2020-08-05 09:55:07 -07:00
Doug Fawley bc714cd8ae
Remove Go 1.9 / AppEngine support; assume go1.12 build tag (#3767) 2020-07-30 16:15:35 -07:00
Menghan Li 067255ffae
xds testing: add path_matching and header_matching (#3764) 2020-07-28 10:33:47 -07:00
Garrett Gutierrez a5a36bd3f0
client: set auth header to localhost for unix target (#3730) 2020-07-21 14:07:03 -07:00
Menghan Li 266c7b6f82
xdsrouting: add fake headers (#3748) 2020-07-20 13:40:03 -07:00
Zou Nengren 4e63bcab52
test: replace manual.GenerateAndRegisterManualResolver with grpc.WithResolvers (#3700) 2020-06-23 09:49:44 -07:00
Doug Fawley eb11ffdf9b
retry: prevent per-RPC creds error from being transparently retried (#3677) 2020-06-11 09:18:17 -07:00
Menghan Li 9aa97f9cb4
stream: fix calloption.After() race in finish (#3672) 2020-06-10 18:00:24 -07:00
Doug Fawley ad51f572fd
protoc-gen-go-grpc: add requirement of embedding UnimplementedServer in services (#3657) 2020-06-04 10:56:13 -07:00
Damien Neil f818fd2a02
all: regenerate .pb.go files using cmd/protoc-gen-go-grpc (#3646)
Change regenerate.sh to use cmd/protoc-gen-go-grpc and rerun it.
This splits the gRPC service definitions into separate files, but
otherwise has no changes.
2020-05-28 13:52:49 -07:00
yihuaz 9eb3e7ddf3
credentials: local creds implementation (#3517)
Local credentials should be used in either a UDS and local TCP connection. The former will be associated with the security level PrigvacyAndIntegrity while the latter is associated with NoSecurity. Local credentials should be used instead of WithInsecure for localhost connections.
2020-05-20 15:43:38 -07:00
Menghan Li 96e5c84cc8
xds: rename resolver scheme to xds (#3621)
https://github.com/grpc/grpc-go/pull/3621
2020-05-19 10:04:23 -07:00
Doug Fawley 4eb418e5b2
balancer: move Balancer and Picker to V2; delete legacy API (#3431) 2020-04-28 14:52:49 -07:00
Eric Gribkoff a3cc4f613d
interop: add --fail_on_failed_rpc xds client flag (#3567) 2020-04-24 12:11:27 -07:00
Damien Neil 15653fec60
all: refactor .pb.go generation (#3451)
Replace various //go:generate lines and regenerate.sh scripts with a
single, top-level regenerate.sh that regenerates all .pb.go files.

Placing generation in a single script ensures that all files are
generated with similar parameters. The new regenerate.sh uses the
protoc-gen-go version defined in test/tools/go.mod and automatically
handles new .proto files as they are added.

Do some minor refactoring on .proto files: Every file now has a
go_package option (which will be required by a future version of the
code generator), and file imports are all relative to the repository
root.
2020-04-24 08:54:03 -07:00
Eric Gribkoff 7d6aa9ed5e
kokoro: use xds-test-server image (#3564) 2020-04-23 17:54:09 -07:00
Easwar Swaminathan 6a3c03883d
Pass address attributes from balancer to creds handshaker. (#3548) 2020-04-23 11:03:42 -07:00
Easwar Swaminathan d15f1a4aa1
test: Move creds related to tests to creds_test.go (#3542) 2020-04-16 16:30:23 -07:00
Menghan Li c7079afb44
lint: fail on missing package comment (#3524)
golint does check for missing package comment, but with low confidence.
golint checks each file, and complains on every file missing package comment, even though another file in the same package has the comment.

This PR adds a golint check with low min_confidence, and filters out false-positives.
2020-04-15 09:59:17 -07:00
Eric Gribkoff 5dbd4c232c
kokoro: allow individual test case logs for xds (#3478)
Also reduce the size of the grpc/grpc download
2020-03-26 11:07:05 -07:00
Eric Gribkoff 09f5e89ac4
kokora: checkout matching grpc/grpc branch for xds test (#3456) 2020-03-13 14:17:50 -07:00
Eric Gribkoff a6bd100681
kokoro: add xds job (#3448) 2020-03-12 13:37:26 -07:00
Garrett Gutierrez 6af3d372ce
Fixed channelz test flakyness. (#3417) 2020-03-03 13:25:42 -08:00
tukeJonny d0235e4d6b
interceptor: new APIs for chaining server interceptors. (#3336) 2020-02-12 11:11:50 -08:00
Garrett Gutierrez 132187f04c
Modified tests to use tlogger. (#3343)
* Modified tests to use tlogger.

* Fail on errors, with error expectations.

* Added expects and MixedCapsed grpclb_config tests

* Moved tlogger to grpctest, moved leakcheck tester to grpctest.go

* Added ExpectErrorN()

* Removed redundant leak checks

* Fixed new test

* Made tlogger globals into tlogger methods

* ErrorsLeft -> EndTest

* Removed some redundant lines

* Fixed error in test and empty map in EndTest
2020-02-06 13:03:20 -08:00
Doug Fawley cb03b9f65c
balancer/base: consider an empty address list an error (#3361) 2020-02-05 13:16:31 -08:00
Doug Fawley 77bc3d3983
test/tools: update protoc-gen-go version used by vet.sh (#3355) 2020-02-03 11:06:34 -08:00
Doug Fawley b88d2d7465
protobuf: update protoc-gen-go version and generated code (#3345) 2020-01-30 10:23:21 -08:00
Garrett Gutierrez e8a4440d49 grpctest: implement grpclogger using testing.T and inject in tests (#3260) 2020-01-13 14:02:31 -08:00
Doug Fawley c35a580b0c
Revert "balancer: move Balancer and Picker to V2; delete legacy… (#3315)
This reverts commit 336cf8d761.
2020-01-13 13:12:55 -08:00
Doug Fawley 336cf8d761
balancer: move Balancer and Picker to V2; delete legacy API (#3301) 2020-01-10 13:44:48 -08:00
Doug Fawley dc49de8acd
balancer: add V2Picker, ClientConn.UpdateState, SubConnState.ConnectionError (#3186)
Also implement V2 versions of base.*, xds, pickfirst, grpclb, and round robin balancers.
2019-11-21 10:27:29 -08:00
Easwar Swaminathan d720ab346f
server: Keepalive pings should be sent every [Time] period (#3172)
This PR contains the server side changes corresponding to the client
side changes made in https://github.com/grpc/grpc-go/pull/3102.

Apart from the fix for the issue mentioned in
https://github.com/grpc/grpc-go/issues/2638, this PR also makes some
minor code cleanup and fixes the channelz test for keepalives count.
2019-11-19 14:43:22 -08:00
Joe Tsai 2d2f65684c cleanup: fix generic comparisons on protobuf messages (#3153)
Generated protobuf messages contain internal data structures
that general purpose comparison functions (e.g., reflect.DeepEqual,
pretty.Compare, etc) do not properly compare. It is already the case
today that these functions may report a difference when two messages
are actually semantically equivalent.

Fix all usages by either calling proto.Equal directly if
the top-level types are themselves proto.Message, or by calling
cmp.Equal with the cmp.Comparer(proto.Equal) option specified.
This option teaches cmp to use proto.Equal anytime it encounters
proto.Message types.
2019-11-06 14:25:07 -08:00
Doug Fawley 6dac020480
test: add test of malformed gzip payload (#3141) 2019-11-05 11:11:34 -08:00
lzhfromustc da2bec01b9 test & testutils: prevent goroutine leaks in test functions (#3133) 2019-11-01 14:51:58 -07:00
Doug Fawley c0909e91a5
resolver: move dns and passthrough to internal (#3116)
Nobody should directly need to reference these packages.

This is technically a breaking change. However:

- Package dns was exporting a NewBuilder method. This should never have been necessary to use, but if so, it can be replaced by importing the "grpc" package and then using resolver.Get("dns").

- Package passthrough was not exporting any symbols and there was never a need to even blank-import it.

After as much searching as possible, it appears nobody in the open source community is referencing either of these packages.
2019-10-22 13:01:54 -07:00
Doug Fawley 7c3115d8bb
client: fix bug with cancellation propagation for unary RPCs (#3106) 2019-10-17 13:04:53 -07:00
Menghan Li 1610f0fd86
mod: move test/tools to a different module (#3086) 2019-10-14 09:31:07 -07:00
Easwar Swaminathan ef403a2ec1
Make healthcheck tests in end2end_test.go more readable. (#2883)
* Make healthcheck tests in end2end_test.go more readable.

- Made these tests use the default health service implementation
  wherever possible.
- Refactored some common code used in these tests into helper functions.
- Added function comments for all these tests to improve readability.

In a follow up PR, I will be moving all these tests into
healthcheck_test.go.
2019-10-11 10:38:51 -07:00
Joe Betz 2e7984e2c0 clientconn: override authority with address's ServerName, if set (#3073) 2019-10-08 13:59:02 -07:00
Doug Fawley df162eae76
test: embed Unimplemented___Server in every service (#3076) 2019-10-04 13:22:31 -07:00
Doug Fawley ed563a02ea
resolver: add State fields to support error handling (#2951) 2019-10-04 12:59:43 -07:00
Shane Liebling 47d3cfe042 Adding a RequestInfo struct for propagating request data to Get… (#3057)
Add a RequestInfo struct which initially is used for passing the full request method (though could later be expanded to pass more info) so that things like GetRequestMetadata can be used to apply logic based on that data.

This is a fix for #3019
2019-10-04 09:27:09 -07:00
Doug Fawley 663e4ce0c9
client: fix race between client-side stream cancellation and compressed server data arriving (#3054)
`transport/Stream.RecvCompress` returns what the header contains, if present,
or empty string if a context error occurs.  However, it "prefers" the header
data even if there is a context error, to prevent a related race.  What happens
here is:

1. RPC starts.

2. Client cancels RPC.

3. `RecvCompress` tells `ClientStream.Recv` that compression used is "" because
   of the context error.  `as.decomp` is left nil, because there is no
   compressor to look up in the registry.

4. Server's header and first message hit client.

5. Client sees the header and message and allows grpc's stream to see them.
   (We only provide context errors if we need to block.)

6. Client performs a successful `Read` on the stream, receiving the gzipped
   payload, then checks `as.decomp`.

7. We have no decompressor but the payload has a bit set indicating the message
   is compressed, so this is an error.  However, when forming the error string,
   `RecvCompress` now returns "gzip" because it doesn't need to block to get
   this from the now-received header.  This leads to the confusing message
   about how "gzip" is not installed even though it is.

This change makes `waitOnHeader` close the stream when context cancellation happens.
Then `RecvCompress` uses whatever value is present in the stream at that time, which
can no longer change because the stream is closed.  Also, this will be in sync with
the messages on the stream - if there are any messages present, the headers must
have been processed first, and `RecvCompress` will contain the proper value.
2019-10-01 10:47:40 -07:00
Doug Fawley e75b8f4830
test: fix flake in GoAwayThenClose (#3052)
In the event of a race, the first server may not be fully serving before the
client attempt to connect, then the second server may attempt to field the
FullDuplexCall, which it does not implement.

Fix the race by giving the client only the first server's address until after
the FullDuplexCall is started.
2019-09-27 13:42:15 -07:00
Doug Fawley a5e64ec425
test: fix channelz test for violating flow control (#3031)
- Send a message from the test server that the client can block on to know for sure the RPC's header was sent.
- Don't receive in the test server so we can violate flow control
- Set a deadline on the RPC so it can't hang forever.
2019-09-18 13:07:23 -07:00
Doug Fawley e2cfd1c28f
internal: update proto library version (#3025)
Also, two fixes:

- Fix long-standing `.travis.yml` bug where `VET_SKIP_PROTO` was not `export`ed (so not seen by `vet.sh`).
- Update `vet.sh` to work with new `goimports -l` that does not print a `:` after filenames.
2019-09-17 13:49:26 -07:00
Doug Fawley 40ed2eb467
server: set and advertise max frame size of 16KB (#3018) 2019-09-11 10:34:34 -07:00
Mats Stichel 3bb34e5324 bufconn: Implement read/write deadlines (#2959) 2019-08-20 10:47:14 -07:00
Menghan Li ee87494b1f transport: fix race between header and RPC cancellation (#2947) 2019-08-12 08:51:22 -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 f7de2c8d62
balancer: filter out grpclb addresses if balancer is not grpclb (#2907) 2019-07-17 15:08:56 -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
Menghan Li 5caf962939
client: addrConn NewStream and health check cleanup (#2848) 2019-06-26 11:15:17 -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
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
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
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
Doug Fawley d40a995895
balancer/resolver: add loadBalancingConfig and pre-parsing support (#2732) 2019-05-30 09:12:58 -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
lyuxuan 42baa8b199
channelz: wait for clean up before next test (#2797) 2019-05-02 14:47:50 -07:00
Qitao Yu 47e1ebe575 client: return helpful error message when wait-for-ready RPCs fail with timeout (#2777) 2019-04-29 12:42:19 -07:00
Prannay Khosla 8260df7a61 grpc: implementation of PreparedMsg API
grpc: implementation of PreparedMsg API
2019-04-19 14:08:08 -07:00
lyuxuan 955eb8a3c8
channelz: cleanup channel registration if Dial fails (#2733) 2019-04-02 15:42:35 -07:00
Menghan Li d389f9fac6
balancer: add server loads from RPC trailers to DoneInfo (#2641) 2019-04-02 11:15:36 -07:00
Doug Fawley 3910b873d3
bar: add ability to update resolver state atomically and pass directly to the balancer (#2693) 2019-03-22 10:48:55 -07:00
Menghan Li 495133b619
internal: fix pickoptions in balancer_test (#2698)
The same test was changed by two PRs, merge didn't catch the conflict
2019-03-19 13:26:46 -07:00
Menghan Li ce45558927
balancer: make sure non-nil done returned by Pick is called (#2688)
Special case: when SubConn returned by Picker is not Ready, call done before
looping back to re-pick.
2019-03-19 10:47:09 -07:00
Doug Fawley 3c84def893
balancer: remove Header from PickOptions; it is also available through context (#2674) 2019-03-15 09:00:55 -07:00
DO ANH TUAN ff28255d10 cleanup: fix typo in comment (#2657)
Although it is spelling mistakes, it might make an effect while reading.
2019-03-14 13:12:48 -07:00
lyuxuan 77ce7bc228
minor: typo fix (#2680) 2019-03-11 15:06:47 -07:00
lyuxuan 79c9bc6794
client: handle HTTP header parsing error correctly (#2599) 2019-03-06 10:59:01 -08:00
Jean de Klerk 5878d965b2
transport: remove RequireHandshakeHybrid support (#2529)
This removes RequireHandshakeHybrid support and changes the default behavior
to RequireHandshakeOn. Dial calls will now block and wait for a successful
handshake before proceeding. Users relying on the old hybrid behavior (cmux
users) should consult https://github.com/soheilhy/cmux/issues/64.

Also, several tests have been updated to take this into consideration by
sending settings frames.
2019-02-27 11:04:46 -07:00
Menghan Li 40cb5618f4
dialOption: export WithContextDialer() (#2629)
fixes #2627
2019-02-25 15:22:10 -08:00
Nguyen Quang Huy 2773c7bbcf Fix styling (#2647)
Fix styling
2019-02-21 16:37:37 -08:00