grpc-java/netty
ZHANG Dapeng b244988572
netty,okhttp: make rpc followed by racy GOAWAY transparent-retry-able
A new RPC starts with the following steps:

1. Pick a READY transport
2. the READY transport calls `transport.newStream()`
3. the new stream calls `stream.start()`
4. `stream.start()` invokes or enqueus `writeHeaders()` (or for GET request, noop)

A racy GOAWAY could happen between 3 and 4, and by the retry spec, the RPC should be transparent-retry-able in this case. For Netty and OkHttp transport implementation, before step 4, (even if step 1, 2, and 3 excluding 4 are made atomic,) the http2-stream for the RPC is not created, so the current transparent retry logic does not apply and need fix.

Of course, if step 1, 2, and 3 including 4 are made atomic, and not with GET, there will be no such problem.
2018-06-28 12:52:17 -07:00
..
shaded all: add gradle format checker 2018-06-11 18:35:18 -07:00
src netty,okhttp: make rpc followed by racy GOAWAY transparent-retry-able 2018-06-28 12:52:17 -07:00
BUILD.bazel Also fix bazel name of io.netty:netty-transport 2017-08-23 15:48:08 -07:00
build.gradle all: add gradle format checker 2018-06-11 18:35:18 -07:00