2713 Commits

Author SHA1 Message Date
cc41663c52 client: fix panic caused by WithWaitForHandshake and related races (#2336) 2018-09-27 14:23:29 -07:00
f8063d3b62 tests: fix leak in TestDialParseTargetUnknownScheme (#2320)
Do a non-blocking send so if dial is called again in a retry, it won't block forever.
2018-09-27 13:50:06 -07:00
a338994886 binarylog: implement env variable config parsing (#2299) 2018-09-26 13:03:54 -07:00
7fea98ede7 Add lock.yml for locking closed, stale PRs/issues (#2331) 2018-09-25 14:15:54 -07:00
4dedfdc82c credentials: support google default creds (#2315)
Google default creds is a combo of ALTS, TLS and OAuth2. The right set of creds will be picked to use based on environment.

This PR contains:
 - A new `creds.Bundle` type
   - changes to use it in ClientConn and transport
   - dial option to set the bundle for a ClientConn
   - balancer options and NewSubConnOption to set it for SubConn
 - Google default creds implementation by @cesarghali 
 - grpclb changes to use different creds mode for different servers
 - interop client changes for google default creds testing
2018-09-25 13:17:25 -07:00
ebea9b5bbc resolver/dns: support custom dns authority (#2265) 2018-09-25 10:45:03 -07:00
30212c8423 internal: fix various problems in transport_test.go
Commit 35c3afad17f705e725ca04bff658932689920154 added a `defer cancel()` line
to transport_test. While this line is generally good, there happens to be a
Go 1.6 bug that when a context that gets passed into Dial is canceled, it
has a 50% chance to incorrectly causes all future Dial writes to fail.

This commit removes that defer and adds a comment explaining the situation.

https://github.com/golang/go/issues/15078
https://github.com/golang/go/issues/15035

This commit also fixes a perceived (by the race detector) racy use of
server.conn by making conn.Close happen inside the goroutine that
uses conn.

This commit also fixes a SIGSEV caused by an incorrect typed nil
check.
2018-09-24 10:46:24 -07:00
82f263dc2f internal: fix race between cancel and shutdown
This fixes a race in ac.tearDown and ac.resetTransport. If ac.resetTransport
is in backoff when ac.tearDown occurs, there's a race between the state
changing to Shutdown and ac.resetTransport calling ac.createTransport.

This fixes it by returning when ac.resetTransport encounters an error
during ac.nextAddr (specifically ac.ctx.Error()). It also fixes it by
making sure that ac.tearDown changes state to Shutdown before canceling
the context.

Both fixes were implemented because they both seem to be valuable
standalone additions: the former makes ac.resetTransport more
understandable and less dependent on behavior happening elsewhere,
and the latter makes ac.tearDown more correct.

Finally, TestDialParseTargetUnknownScheme had its buffer removed; the
buffer was likely added a while ago to assuage this issue. It should
not be necessary anymore.
2018-09-24 10:46:24 -07:00
8997b5fa08 credentials/alts: Pass the target name to ALTS handshaker (#2319) 2018-09-20 16:48:47 -07:00
35c3afad17 Transport refactor (#2305)
internal: remove transportMonitor, replace with callbacks

This refactors the internal http2 transport to use callbacks instead
of continuously monitoring the transport in a separate goroutine. This
has several advantages:

- Less goroutines.
- Less complexity: synchronous callbacks are much easier to reason to
reason about than asynchronous monitoring goroutines.
- Callbacks: these provide definitive locations for monitoring the
creation and closure of a transport, paving the way for GracefulStop.

This CL also consolidates all the logic about backoff and iterating
through the list of addresses into a single method.
2018-09-20 15:45:40 -07:00
0baa06717e tests: fix goroutine leak (#2317)
tests: fix goroutine leak

If TestResetConnectBackoff fails, the resetTransport goroutine will be
stuck dialing and subsequently the goroutine will be leaked. This is
all despite the test including `defer cc.Close()`:

- defer cc.Close() will cause ac.cancel to be called
- ac.context will be appropriately cancelled
- ac.context is correctly the context that gets passed to the dialer
- However, the WithDialer throws away the context and only passes its
deadline, which is for `backoffForever{}` is math.MaxInt64. So, even
though teardown occurs, the resetTransport goroutine will still be
stuck dialing.

This CL adds a small amendment: before performing leakcheck, attempt
to take an item off the synchronous `dials` channel. Either the tests
passed and there is no item, or the tests failed and there is one.
2018-09-20 15:26:05 -07:00
8ce7e6babb stream: never return errors from CloseSend (#2312) 2018-09-19 08:44:26 -07:00
be59908d40 testing: upgrade appengine sdk to version 1.9.68 (#2311)
Make goapp use go version 1.9.
2018-09-18 10:42:17 -07:00
bd04c06895 vet: move go_vet directory under test directory (#2310) 2018-09-17 15:03:21 -07:00
0ec11dceb4 typo: remove duplicate "the" (#2309) 2018-09-17 14:01:20 -07:00
f2aaa9bf74 Check error when calling compressor.Compress (#2274)
Compress can return an error, which was not checked.
2018-09-14 08:57:13 -07:00
acd1429515 channelz: channel tracing (#2262)
* channelz: channel trancing

* add service

* update

* uuu

* better testing

* switch to single API

* fix lint

* fix review comments

* fix fix review

* uuuupdate

* switch on channel type, instead of using boolean
2018-09-12 11:15:32 -07:00
9cc4fdbde2 Change version to 1.16.0-dev (#2303) 2018-09-11 11:35:35 -07:00
d42ac64492 move tools.go to sub-package (#2300)
`godep` by default pulls in all dependencies regardless of build tags.  If `tools.go` is in our main package, that can cause unnecessary dependencies to be pulled into others' repos that otherwise don't need them.  Moving it to an unused sub-package appears to fix this problem.
2018-09-11 10:33:48 -07:00
46ee6abebf import check for appengine environment(#2215) 2018-09-10 17:32:46 -07:00
5fe5ce74bb credentials/alts: Export test APIs (#2293) 2018-09-07 11:05:56 -07:00
16df5a3328 credentials/alts: Rename core package to internal (#2296) 2018-09-07 10:24:15 -07:00
0150fc5d50 credentials/alts: Move alts/core to alts/internal (#2292) 2018-09-05 15:15:42 -07:00
5fe10fccaf Remove unused symbols (#2287) 2018-09-05 12:29:02 -07:00
90f728eaf7 Remove shadowing of built-ins (#2290) 2018-09-05 09:05:40 -07:00
ccd64cfcfa Miscellaneous small cleanups (#2291) 2018-09-04 15:11:50 -07:00
826807ed07 change 'if x == true' to 'if x' (#2289) 2018-09-04 15:10:47 -07:00
ba4eb68a02 Travis/Makefile/vet cleanups (#2283)
- .travis.yml:
  - Download dependencies at install time
  - Run race and non-race in separate instances
  - Use braces around env var names
- vet.sh:
  - Run `go mod tidy` to keep it tidy
  - Stop filtering transport errors from go/vet output
  - Use braces around env var names
- Makefile:
  - Reorder alphabetically
  - Add "vetdeps" as a dependency of "vet"
  - Add "testappengine" to "all"
2018-09-04 15:10:01 -07:00
911d69081b Make all error strings use lowercased first letter per Go style (#2286) 2018-09-04 14:09:49 -07:00
ce4f3c8a89 Initial go.mod module definition and corresponding Travis/vet.sh changes (#2281) 2018-08-31 12:58:30 -07:00
da7e20b83e channelz: turn on channelz when importing service package, delete RegisterChannelz from grpc package (#2277) 2018-08-29 11:01:36 -07:00
a91fb537b1 credentials/alts: Add ALTS AuthInfoFromPeer API (#2269) 2018-08-28 10:44:03 -07:00
59dd9b3f19 test: add go 1.11 to travis and remove go 1.7 (#2278) 2018-08-27 13:31:20 -07:00
d2aec4d7de client: Add ClientConn.ResetConnectBackoff to force reconnections on demand (#2273)
Fixes #1037
2018-08-27 13:21:48 -07:00
91c7ef84b5 client: fix FailOnNonTempDialError and add a test for it (#2276) 2018-08-27 10:28:41 -07:00
e00d24941b testdata: get test assets related to package root instead of GOPATH (#2272)
fixes #2270
2018-08-22 09:00:39 -07:00
9907ae0e57 health: update pb.go and add watch method (#2263)
This PR fixes the failed build. The new `watch` method is not implemented.
2018-08-15 15:32:29 -07:00
07ef407d99 channelz: unexport unnecessary API on grpc entities (#2257) 2018-08-06 16:02:47 -07:00
f4da7eee53 channelz: use atomic instead of mutex (#2218) 2018-08-06 11:17:12 -07:00
a344a35754 internal: remove TestingUseHandlerImpl (#2253) 2018-08-03 09:35:00 -07:00
3b859c04c1 update proto generated code (#2254) 2018-08-02 13:51:36 -07:00
b20cbb449d Revert "internal: remove transportMonitor, replace with callbacks" (#2252)
Reverts grpc/grpc-go#2219 because of #2251
2018-08-01 15:40:56 -07:00
97da9e087c internal: remove transportMonitor, replace with callbacks (#2219) 2018-07-31 14:10:13 -07:00
fb6867e42b Change version to 1.15.0-dev (#2247) 2018-07-31 10:11:35 -07:00
8fbeaf87a6 interop: implement special_status_message interop test (#2241)
fixes #2240
2018-07-30 13:33:50 -07:00
efcc5364b8 internal/grpcsync: introduce package for synchronization (#2244) 2018-07-30 10:08:08 -07:00
804c2a9051 remove 1.6 support for channelz (#2242)
ChannelZ is a debugging feature in grpc. It has not had appengine support; this commit
removes its support for 1.6, too. This change is because in a recent sys/unix commit
1.6 support was broken.
2018-07-26 14:24:04 -07:00
339b6cb107 transport: eliminate StreamError; use status errors instead (#2239) 2018-07-26 10:30:58 -07:00
c03697249e transport: replace ClientTransport with *http2Client for internal usage (#2238) 2018-07-26 10:19:45 -07:00
fe131d6f02 disable go1.6 travis tests (#2237)
This can be reverted when https://github.com/golang/go/issues/26576 is resolved.
2018-07-25 13:14:15 -07:00