204 Commits

Author SHA1 Message Date
9572bbe0f9 cleanup: remove unused symbols (#2581) 2019-01-17 10:14:45 -08:00
dfd7708d35 cleanup: use time.Until(t) instead of t.Sub(time.Now) (#2571) 2019-01-15 16:09:50 -08:00
9e7c146356 Return nil trailer metadata, if the RPC's status is context canceled. (#2554)
* Closes the client transport stream, if context is cancelled while recvBuffer is reading.

* Passes a function pointer to recvBufferReader, instead of a Stream and an http2Client.

* Adds more descriptive error messages.

* If waitOnHeader notices the context cancelation, shouldRetry no longer returns a ContextError. Instead, it returns the error from the last try.

* Makes sure that test gets both statuses at least 5 times.

* Makse cntPermDenied a lambda function.
2019-01-14 10:59:44 -08:00
04ea82009c cleanup: replace "x/net/context" import with "context" (#2439) 2018-11-12 13:30:41 -08:00
a612bb6847 client: block RPCs early until the resolver has returned addresses (#2409)
This allows the initial RPC(s) an opportunity to apply settings from the service config; without this change we would still block, but only after observing the current service config settings.
2018-11-09 13:53:47 -08:00
61c3ec866d docs: clarify SendMsg/CloseSend usage (#2418) 2018-11-01 12:29:53 -06:00
105f61423e health: Client LB channel health checking (#2387) 2018-11-01 10:49:35 -07:00
24638f5984 binarylog: call binary log in Client and Server (#2388)
Also includes:
 - Export `NewLoggerFromConfigString` so it can be also used when config string is specified in another way (e.g. command line flag)
 - Export `Logger` so user can install custom sink
 - Add temp file sink implementation
2018-10-31 10:21:20 -07:00
c195587d96 balancer: add trailer metadata to DoneInfo (#2359) 2018-10-10 13:21:08 -07:00
8ce7e6babb stream: never return errors from CloseSend (#2312) 2018-09-19 08:44:26 -07:00
e193757038 internal/transport: remove some unused fields from structs (#2213)
- Flush and Authority are never read by the transport.
- Authority is used indirectly; move it to dialOptions.
- Delay is only set to false.
2018-07-13 09:56:47 -07:00
11b582728a transport: move to internal to make room for new, public transport API (#2212)
This is a breaking change, but the transport package was never intended for use outside of grpc.  Any current users that we are aware of are incorrect or have a preferred alternative.
2018-07-11 11:22:45 -07:00
f57a529f33 balancer: add rpc method to PickOptions (#2204)
Provide additional context to Pickers that wish to make decisions based on the RPC method.

Relevant issue: https://github.com/grpc/grpc-go/issues/2103
2018-07-11 10:18:09 -07:00
50de898e66 deprecate stream, move documentation to client|server stream (#2198)
docs: deprecate stream, move documentation to client|server stream

Deprecate Stream, and move the methods and documention to ServerStream
and ClientStream. This is due to the fact that there are different
semantics for SendMsg, and it's quite confusing to document one method
for two things. Furthermore, Stream is not actually used in any way
other than to be inherited by ClientStream and ServerStream.

Relevant issue: #2159
2018-07-09 16:46:25 -07:00
40cd6b15e2 stream: in withRetry, block until Status is valid and check on io.EOF (#2199)
Also, return an error if SendMsg is called after CloseSend.
2018-07-03 14:07:07 -07:00
d35d006431 Fix flaky test: TestClientStreamingError (#2192) 2018-07-02 10:08:26 -07:00
40a879c23a client: Implement gRFC A6: configurable client-side retry support (#2111) 2018-06-27 16:18:41 -07:00
f9bde863c2 documentation: clarify SendMsg documentation (#2171)
documentation: clarify SendMsg documentation

Relevant issue: #2159
2018-06-27 16:16:07 -07:00
b28608a9db channelz: move APIs to internal except channelz service (#2157) 2018-06-18 17:59:08 -07:00
bfe419798a clarify CloseSend vs CloseAndRecv; better formatting (#2071)
clarify CloseSend vs CloseAndRecv; better formatting
2018-05-29 11:35:11 -07:00
091a800143 split encode into three functions (#2058) 2018-05-11 13:47:10 -07:00
b75baa103c small documentation addition to NewStream (#2060) 2018-05-11 08:43:47 -07:00
0bc7c3280e Revert "Less mem (#1987)" (#2049)
This reverts commit 7a8c9895074e03bc7fcff30bd561eaef4fa76dfa.
2018-05-03 11:37:59 -07:00
3592bccfd9 interop: Fix unimplemented method test (#2040)
* Don't send nil requests.

* Fix import name and get rid of condition.

* Let registered encoder deal with nil requests.

* Break encode into encode and compress.
2018-05-02 16:08:12 -07:00
7a8c989507 Less mem (#1987)
* Export changes to OSS.

* First commit.

* Cherry-pick.

* Documentation.

* Post review updates.
2018-04-30 09:54:33 -07:00
4166ea7dad Stage 2: Channelz metric collection (#1909) 2018-04-23 11:22:25 -07:00
95bbf69653 Remove redundant return statements (gosimple)
This fixes:
balancer/base/balancer.go:149:2: redundant return statement (S1023)
balancer_v1_wrapper.go:260:2: redundant return statement (S1023)
balancer_v1_wrapper.go:273:2: redundant return statement (S1023)
balancer_v1_wrapper.go:285:2: redundant return statement (S1023)
benchmark/benchmark.go:68:2: redundant return statement (S1023)
clientconn.go:1461:2: redundant return statement (S1023)
grpclb.go:223:2: redundant return statement (S1023)
grpclb.go:260:2: redundant return statement (S1023)
grpclb_util.go:201:2: redundant return statement (S1023)
rpc_util.go:278:50: redundant return statement (S1023)
rpc_util.go:296:56: redundant return statement (S1023)
rpc_util.go:314:56: redundant return statement (S1023)
rpc_util.go:333:53: redundant return statement (S1023)
rpc_util.go:354:52: redundant return statement (S1023)
rpc_util.go:387:56: redundant return statement (S1023)
rpc_util.go:416:53: redundant return statement (S1023)
stream.go:651:2: redundant return statement (S1023)
2018-04-15 12:43:34 +02:00
2eae9d0c74 server: add grpc.Method function for extracting method from context (#1961) 2018-04-02 13:08:04 -07:00
1a70180f35 client: Fix race when using both client-side default CallOptions and per-call CallOptions (#1948) 2018-03-29 10:34:29 -07:00
57640c0e6f Allow storing alternate transport.ServerStream implementations in context (#1904) 2018-03-20 17:02:32 -07:00
fa28bef939 client: export types implementing CallOptions for access by interceptors (#1902) 2018-03-16 15:57:34 -07:00
13975c0702 stream: split per-attempt data from clientStream (#1900)
This is pre-work to implementing retry support. Each retry attempt will have its own csAttempt. The fields left in clientStream are the same across all attempts.
2018-03-12 13:27:54 -07:00
2c2d834e8e stats: add BeginTime to stats.End (#1907) 2018-03-12 09:16:36 -07:00
9aba04495f server: Convert all non-status errors to codes.Unknown (#1881)
- convertCode utilized errors that were not allowed by the library per 9d0bc30edb/doc/statuscodes.md
- Relevant issue: #1672
2018-03-08 13:46:26 -08:00
365770fcbd streams: Stop cleaning up after orphaned streams (#1854)
This change introduces some behavior changes that should not impact users that
are following the proper stream protocol. Specifically, one of the following
conditions must be satisfied:

1. The user calls Close on the ClientConn.
2. The user cancels the context provided to NewClientStream, or its deadline
    expires. (Note that it if the context is no longer needed before the deadline
    expires, it is still recommended to call cancel to prevent bloat.) It is always
    recommended to cancel contexts when they are no longer needed, and to
    never use the background context directly, so all users should always be
    doing this.
3. The user calls RecvMsg (or Recv in generated code) until a non-nil error is
    returned.
4. The user receives any error from Header or SendMsg (or Send in generated
    code) besides io.EOF.  If none of the above happen, this will leak a goroutine
    and a context, and grpc will not call the optionally-configured stats handler
    with a stats.End message.

Before this change, if a user created a stream and the server ended the stream,
the stats handler would be invoked with a stats.End containing the final status
of the stream. Subsequent calls to RecvMsg would then trigger the stats handler
with InPayloads, which may be unexpected by stats handlers.
2018-02-08 10:51:16 -08:00
d09ec43545 Implement unary functionality using streams (#1835) 2018-02-05 12:54:13 -08:00
424e3e9894 Stream: do not cancel ctx created with service config timeout (#1838) 2018-02-02 10:35:15 -08:00
5ba054bf37 encoding: Introduce new method for registering and choosing codecs (#1813) 2018-01-23 11:39:40 -08:00
6913ad5cae Document that all errors from RPCs are status errors (#1782) 2018-01-05 15:37:05 -08:00
c998149a22 Avoid copying headers/trailers in unary RPCs unless requested by CallOptions (#1775)
CPU profile shows that header copy takes a large proportion of CPU usage in a gRPC Call.
If the header is not needed, we don't need to pay the cost.
2018-01-03 09:13:06 -08:00
4e393e0b21 grpc: fix deprecation comments to conform to standard (#1691) 2017-12-18 09:23:42 -08:00
2ef021f78d New grpclb implementation (#1558)
The new grpclb supports fallback to backends if remote balancer is unavailable
2017-11-27 11:16:26 -08:00
6253aa9397 set context timeout when Timeout value >= 0 (#1678)
To be consistent with call.go/invoke

Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com>
2017-11-20 13:49:49 -08:00
816fa5b06f Add proper support for 'identity' encoding type (#1664) 2017-11-17 09:24:54 -08:00
8ff8683602 Implement transparent retries for gRFC A6 (#1597) 2017-11-06 13:45:11 -08:00
5db344a40a Introduce new Compressor/Decompressor API (#1428) 2017-10-31 10:21:13 -07:00
a4ff4e29c4 Get method string from stream (#1588) 2017-10-26 16:03:44 -07:00
a5986a5c88 Add functions to ClientConn so it satisfies an interface for generated code (#1599) 2017-10-20 14:21:31 -07:00
4bbdf230d7 New implementation of roundrobin and pickfirst (#1506) 2017-10-02 09:22:57 -07:00
894322f00c Dedicated goroutine for writing. (#1498) 2017-09-14 13:44:14 -07:00