Commit Graph

316 Commits

Author SHA1 Message Date
lyuxuan 7f73c863c0
Channelz: Entity Registration and Deletion (#1811) 2018-04-09 11:13:06 -07:00
dfawley 2eae9d0c74
server: add grpc.Method function for extracting method from context (#1961) 2018-04-02 13:08:04 -07:00
Joshua Humphries 57640c0e6f Allow storing alternate transport.ServerStream implementations in context (#1904) 2018-03-20 17:02:32 -07:00
Brian Tiger Chow 2c2d834e8e stats: add BeginTime to stats.End (#1907) 2018-03-12 09:16:36 -07:00
Jean de Klerk 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
Eric 7646b5360d transport: support stats.Handler in serverHandlerTransport (#1840) 2018-02-06 10:11:40 -08:00
dfawley 5ba054bf37
encoding: Introduce new method for registering and choosing codecs (#1813) 2018-01-23 11:39:40 -08:00
dfawley 09fc336d84
server: fix bug preventing Serve from exiting when Listener is closed (#1765) 2017-12-22 12:42:04 -08:00
dfawley 2720857d97
server: fix race between GracefulStop and new incoming connections (#1745)
New connections can race with GracefulStop such that the server will accept the connection, but then close it immediately. If a connection is accepted before GracefulStop has a chance to effectively cancel the listeners, the server should handle it to avoid client errors.
2017-12-18 15:38:51 -08:00
Daniel Nephin 4e393e0b21 grpc: fix deprecation comments to conform to standard (#1691) 2017-12-18 09:23:42 -08:00
dfawley 816fa5b06f
Add proper support for 'identity' encoding type (#1664) 2017-11-17 09:24:54 -08:00
Elliot Wright 5f2e2f999e Corrected documentation on Server.Serve (#1668) 2017-11-13 13:37:12 -08:00
dfawley 8ff8683602
Implement transparent retries for gRFC A6 (#1597) 2017-11-06 13:45:11 -08:00
dfawley 551f295763
server: add EXPERIMENTAL tag to grpc.ConnectTimeout (#1652) 2017-11-06 10:29:48 -08:00
dfawley 4318e6475c
server: apply deadline to new connections until all handshaking is completed (#1646) 2017-11-03 13:53:17 -07:00
Zhouyihai Ding 5db344a40a Introduce new Compressor/Decompressor API (#1428) 2017-10-31 10:21:13 -07:00
dfawley c5f391bd6c Revert "cap max msg size to min(max_int, max_uint32) (#1598)" (#1619)
This reverts commit 5856538706.
2017-10-25 10:31:00 -07:00
lyuxuan 5856538706 cap max msg size to min(max_int, max_uint32) (#1598) 2017-10-24 10:20:54 -07:00
Shangpeng Sun 473b14250d Serve() should not return error on Stop() or GracefulStop() (#1485)
* Serve() should not return error on Stop() or GracefulStop()
* Block Serve() until Stop() or GracefulStop() returns
2017-10-18 15:27:24 -07:00
田欧 faebfcb7bf Remove single-entry var blocks (#1589) 2017-10-18 09:59:23 -07:00
dfawley 5279edf262 Update UnknownServiceHandler comment to be clearer about interceptor behavior (#1566) 2017-10-05 16:17:40 -07:00
mmukhi 8214c28a62 Make IO Buffer size configurable. (#1544)
* Make IO Buffer size configurable.

* Fixing typo
2017-09-28 14:11:14 -07:00
mmukhi 894322f00c Dedicated goroutine for writing. (#1498) 2017-09-14 13:44:14 -07:00
ZhouyihaiDing 01089b2972 Remove buf copy when the compressor exist (#1427) 2017-08-25 12:26:38 -07:00
lyuxuan 9d99afc2fd Automatic WriteStatus for RecvMsg/SendMsg error on server side (#1409)
automatically WriteStatus if there's any error when RecvMsg/SendMsg on server side.
2017-08-14 12:24:23 -07:00
dfawley 73041be906 Add 'experimental' note to ServeHTTP godoc (#1429) 2017-08-08 08:58:35 -07:00
Brad Fitzpatrick 383b11435b Document Server.ServeHTTP (#1406)
Fixes #549
2017-08-07 13:10:34 -07:00
Menghan Li d6723916d2 Use log severity and verbosity level (#1340)
- All logs use 1 severity level instead of printf
 - All transport logs only go to verbose level 2+
 - The default logger only log errors and verbosity level 1
 - Add environment variable GRPC_GO_LOG_SEVERITY_LEVEL and GRPC_GO_LOG_VERBOSITY_LEVEL to set severity or verbosity levels for the default logger
2017-07-13 12:10:19 -07:00
Peter Mattis 57ff3285cf Catch invalid use of Server.RegisterService after Register.Serve (#828) 2017-06-26 10:39:47 -07:00
Jan Tattermusch ddbf6c46a6 autofix license notice 2017-06-08 14:42:19 +02:00
MakMukhi 6fecf2831a Reopening: Server shouldn't Fatalf in case it fails to encode. (#1276)
* Server shouldn't Fatalf in case it fails to encode.
2017-06-02 12:32:37 -07:00
MakMukhi 843116533a Revert "Server shouldn't Fatalf in case it fails to encode. (#1251)" (#1274)
This reverts commit d5bc85c1e9.
2017-06-01 12:34:28 -07:00
MakMukhi d5bc85c1e9 Server shouldn't Fatalf in case it fails to encode. (#1251)
* Server shouldn't Fatalf in case it fails to encode.

* golint

* post-review update
2017-06-01 11:57:45 -07:00
lyuxuan 9f919f7b81 Merge pull request #1165 from lyuxuan/service_config_pr
Expand service config support
2017-05-22 11:15:26 -07:00
Alexander Morozov 9bf8ea0a82 clientconn, server: replace time.After with time.NewTimer (#998)
When timeout is not hit `time.After` will leak unnecessary timer, so
it's better to stop timer explicitly.

Signed-off-by: Alexander Morozov <lk4d4math@gmail.com>
2017-05-19 15:57:10 -07:00
Yuxuan Li d19bbe846e change max message size functions name 2017-05-19 11:08:40 -07:00
Yuxuan Li 504db8e582 merge master 2017-05-18 14:52:35 -07:00
Tamir Duberstein 3773797869 Travis: add staticcheck (#1019)
Also only run golint and go vet in Go 1.8, and fix some vet failures.
2017-05-15 17:05:27 -07:00
lyuxuan 7505481848 comments added 2017-05-15 15:13:53 -07:00
Yuxuan Li bdf9a640e4 add timeout test, add check or pointer filed in callOption, fix minor issues 2017-05-15 13:51:11 -07:00
lyuxuan 3ea287058c Merge branch 'master' into service_config_pr 2017-05-07 16:49:32 -07:00
Matt T. Proud 66a9140c20 make ServerOption panic messages more clear. (#1194)
ServerOption panics when fields that have been manually set are
subsequently set again.  The message verbiage of `X has been set` is
unclear since `has been set` without an adverb like `already` does not
correctly convey that the fields are set-once and were previously set.
At the worst, the original verbiage `X has been set` could imply that
the new value would have been acceptable but another error occurred.

We discovered this while conducting a code survey for implementing
extensible stubs and uniform inbound interception API.
2017-05-05 13:31:10 -07:00
MakMukhi f3b5bf53ce Make window size configurable. (#1210)
* Make window size configurable.
2017-05-05 13:26:56 -07:00
Adele Zhou a40b8d44e0 Address the comments 2017-05-04 16:29:17 -07:00
Adele Zhou 7ddf89f9b7 Fix doc 2017-05-04 10:30:28 -07:00
kirk 0914b46180 don't add defer func if stats handler is nil (#1214) 2017-05-02 10:16:45 -07:00
Yuxuan Li ecbc34aaca move server defaults, delete defer cancel() in stream.go 2017-04-26 17:39:57 -07:00
Yuxuan Li cb02ab4d25 change error message from InvalidArgument to ResourceExhausted 2017-04-13 16:51:56 -07:00
Yuxuan Li 8788b75675 merge master resolve conflicts 2017-04-13 16:28:15 -07:00
Yuxuan Li 74a632af0e fix comments 2017-04-06 17:28:41 -07:00
Yuxuan Li aad28b3c55 add error handling for InvalidArgument error from sendResponse() 2017-04-06 14:40:53 -07:00
Yuxuan Li c6a3937033 fix send response error case 2017-04-06 14:30:59 -07:00
Yuxuan Li fa2968617c Merge branch 'master' into service_config_pr 2017-04-06 14:12:34 -07:00
Yuxuan Li 6f8b55318a fix the testMaxMsgSizeServerAPI failure 2017-04-06 14:08:04 -07:00
dfawley 1d27587e10 Change status package to deal with concrete types instead of interfaces (#1171) 2017-04-06 11:41:07 -07:00
lyuxuan f02290b023 Merge branch 'master' into service_config_pr 2017-04-05 11:15:55 -07:00
dfawley b507112439 Add status package for reporting gRPC status and errors (#1156)
When an error implemented by the status package is returned from a service
handler, the server will transmit a rich status message in the
"grpc-status-details-bin" trailing metadata field if any detailed data is
attached to the error.  Client-side, we will decode them if present in the
server's response and return them to the user code performing the RPC.

This is backward compatible with the existing errors supported by the grpc
package.  However, the grpc.Errorf, grpc.Code and grpc.ErrorDesc functions for
managing errors are now deprecated; status.Errorf and status.Status type
asserions should be used instead.
2017-04-05 10:35:40 -07:00
Yuxuan Li ad16b942fb fix gofmt goimports go tool vet errors 2017-04-03 16:03:05 -07:00
Yuxuan Li 13b5f120b0 merge master 2017-04-03 15:20:13 -07:00
Yuxuan Li 50d4175072 Add client and service side apis for limiting the send/recv msg size. Update MethodConfig struct 2017-04-03 15:03:24 -07:00
MakMukhi b2fae0cf40 Implementation for server enforcement of keepalive policy. (#1147)
Implementation of server enforcement of keepalive policy.
Server will close connection with a client that violates this policy.
Policy parameters:
 - MinTime is the minimum amount of time a client should wait before sending a keepalive ping.
 - If PermitWithoutStream true, server expects keepalive pings even when there are no active streams(RPCs).
2017-03-31 11:37:51 -07:00
Mahak Mukhi 82fb96a360 Rest of the implementation 2017-03-10 17:30:46 -08:00
Mahak Mukhi d9b58b5ce9 Initial commit 2017-03-09 15:33:28 -08:00
Michal Witkowski e59576b1bb add support for user-provided UnknownStreamHandler 2017-02-27 18:07:41 +00:00
Menghan Li cb653e4b61 Change stats APIs (#1030)
Change stats API from one static handler to one handler per server or client.
2017-01-09 17:11:32 -08:00
Menghan Li 5ad7c5b8ca add always returns non-nil error comment to server.serve() 2016-12-08 13:48:11 -08:00
Menghan Li deb01f422a add stats tagger APIs and connection stats. (#992)
* add stats.tagger APIs and connection stats.

* fix comments

use ac.ctx in http2client
change name and comments
small fixes stats_tests

* add a TODO to ConnTagInfo

* rename handle to handleRPC

* modify stats comments
2016-11-30 16:25:46 -08:00
Menghan Li f80f54e4d9 fix failing tests 2016-11-08 21:22:07 -08:00
Menghan Li 6445dedfbc fix wrong context when handling stats 2016-11-08 18:17:14 -08:00
Menghan Li ff0b1db33e fix comments 2016-11-08 10:31:02 -08:00
Menghan Li d23fdd776b fix comments 2016-11-07 15:32:44 -08:00
Menghan Li 5938492b60 fix comments 2016-11-07 15:16:52 -08:00
Menghan Li a4edc462a2 renaming 2016-11-07 15:16:52 -08:00
Menghan Li aa5b5c7e2a client side, use user context, and change sent time 2016-11-07 15:16:52 -08:00
Menghan Li 1d2a929ae5 add stats.Begin and stats.End 2016-11-07 15:16:52 -08:00
Menghan Li c698588285 Renaming types and variables 2016-11-07 15:16:52 -08:00
Menghan Li 1054f1c42b add payload with original type to payload stats 2016-11-07 15:16:52 -08:00
Menghan Li 85c5e0e3b6 add errorStats 2016-11-07 15:16:52 -08:00
Menghan Li 7984a9c679 change CallBack to handler, and move ctx out of Stats. 2016-11-07 15:16:52 -08:00
Menghan Li 17ee5a3637 Add package stats, and export stats on server side. 2016-11-07 15:16:52 -08:00
iamqizhao f3469bf27a add the missing comment 2016-11-03 16:46:21 -07:00
iamqizhao b85d2b0be5 Support transport tap 2016-11-03 14:21:24 -07:00
Mark Nevill bac9e1d16e Make concurrent Server.GracefulStop calls all behave equivalently. 2016-10-17 13:18:45 +01:00
Qi Zhao b057848384 Merge pull request #914 from flisky/master
fix server exit due to a temporary network error
2016-10-14 11:34:03 -07:00
Yin Jifeng e966e94443 fix server exit due to a temporary network error 2016-10-14 11:49:54 +08:00
Menghan Li e790079956 Add grpc.SetHeader and ServerStream.SetHeader 2016-10-11 13:58:16 -07:00
Menghan Li 1247834778 Allow multiple calls to setTrailer 2016-09-29 14:38:20 -07:00
Menghan Li 1c20514d29 Make grpc.SendHeader return rpc error 2016-09-09 11:36:01 -07:00
Qi Zhao 8d57dd3404 Merge pull request #874 from menghanl/avoid_streamerror
Fix server side errors
2016-09-02 14:30:07 -07:00
Eric Drechsel 3bea3c5f8b Doc: Fix typo in func (s *Server) comment 2016-09-02 12:20:15 -07:00
Menghan Li 5e734ab23e Avoid creating transport stream error outside of transport 2016-09-02 11:57:42 -07:00
Menghan Li 0c58a17d6f Add credentials ErrConnDispatch 2016-08-24 16:20:57 -07:00
iamqizhao bcbb6549ac Merge branch 'master' of https://github.com/grpc/grpc-go 2016-07-29 16:20:08 -07:00
iamqizhao b13920a0cf add the mem alloc guard on server 2016-07-29 16:19:20 -07:00
iamqizhao 0f3fc4355d refactor GracefulStop a bit 2016-07-29 10:59:24 -07:00
iamqizhao a4c08780d5 Merge branch 'master' of https://github.com/grpc/grpc-go 2016-07-29 10:10:58 -07:00
Tamir Duberstein 069ed42115
Fix deadlock when GracefulStop()ing multiple times
Fixes #793.
2016-07-29 12:26:26 -04:00
iamqizhao b128e7465a merge the conflict 2016-07-28 13:17:23 -07:00
iamqizhao c3a89f91a6 Merge branch 'master' of https://github.com/grpc/grpc-go 2016-07-28 13:04:50 -07:00
Tamir Duberstein ac90a026b6
*: go vet 2016-07-27 23:39:19 -04:00
iamqizhao 110450d45e fix races introduce by goaway 2016-07-27 17:27:10 -07:00
iamqizhao 8c908a8c1d Reject over-sized requests on server 2016-07-26 16:44:49 -07:00
iamqizhao f78100723d Merge branch 'master' of https://github.com/grpc/grpc-go 2016-07-26 14:04:25 -07:00
iamqizhao b071b83367 limit max msg size on server 2016-07-26 14:04:19 -07:00
iamqizhao f1e4d3b180 allow multiple GoAways and retrying on illegal streams 2016-07-25 16:35:32 -07:00
iamqizhao 046e606dc5 clean up 2016-07-21 18:12:01 -07:00
iamqizhao 9ad4c58355 Make it work for streaming 2016-07-21 16:19:34 -07:00
iamqizhao 873cc272c2 support goaway 2016-07-20 18:48:49 -07:00
Qi Zhao 7428593149 Merge pull request #759 from menghanl/streams_in_serviceinfo_comments
Fix comments
2016-07-14 10:55:28 -07:00
Alexander Morozov 47de9c3564 server: close only non-closed listeners
The listener can be closed twice: in Close and in Serve. It might lead to
pretty bad things, for example, https://golang.org/src/net/unixsock_posix.go#L340
can delete a file which created by another listener.

Signed-off-by: Alexander Morozov <lk4d4math@gmail.com>
2016-07-12 21:16:45 -07:00
Menghan Li 42a2879989 Modify comments 2016-07-11 16:25:52 -07:00
Menghan Li bc8885608f Merge unary RPC info and streaming RPC info 2016-07-11 13:09:50 -07:00
Menghan Li 0ea9f970c0 Add StreamInfo for streaming types 2016-07-11 12:09:05 -07:00
Menghan Li a518fa911d Split methods and streams in service info 2016-07-11 12:09:05 -07:00
Daniel Ruehle 3802318f46 Make Errorf return pointer to rpcError 2016-07-08 10:28:36 -07:00
Menghan Li 078c90026f Minor fixes 2016-06-27 14:51:09 -07:00
Menghan Li 26d2db5487 Add server.GetServiceInfo().
To replace server.ServiceMetadata() and server.AllServiceNames().
2016-06-27 12:01:05 -07:00
Menghan Li 69c7425a21 Change server.ServiceMetadata to take service name and method name.
And some minor changes.
2016-06-27 12:01:05 -07:00
Menghan Li efe8d5f0f7 Add function AllServiceNames() to Server 2016-06-27 12:01:05 -07:00
Menghan Li e826825578 Add function Metadata() to Server 2016-06-27 12:01:05 -07:00
Menghan Li ad71085be9 Add metadata when registering service 2016-06-27 12:01:05 -07:00
Qi Zhao 3efe7aef96 Merge pull request #713 from menghanl/split_authenticator_and_credentials
[API revision] Separate TransportAuthenticator and PerRPCCredentials
2016-06-09 14:57:55 -07:00
Menghan Li 59486d9c17 Rename TransportAuthenticator to TransportCredentials 2016-06-08 11:19:25 -07:00
Menghan Li 7233968957 Add Metadata field to ServiceDesc 2016-06-07 15:40:14 -07:00
Menghan Li 6404c49192 Make TransportAuthenticator not embed Credentials 2016-06-06 16:24:46 -07:00
Qi Zhao aecdccadd2 Merge pull request #683 from mwitkow/feature/propagate-authority
make :authority propagate to MD
2016-06-01 18:18:23 -07:00
Qi Zhao 89e77e914d Merge pull request #706 from menghanl/fix_golint
Fix golint
2016-06-01 18:12:45 -07:00
Menghan Li fc590f40e9 Fix golint errors 2016-06-01 16:40:26 -07:00
Ben Darnell bab01e8e85 Fix a listener leak when a server is stopped before it starts
If server.Stop() and server.Serve() race, Serve() can return without
closing the listener. This in turn can lead to clients timing out trying
to connect to a server that is neither accepting nor rejecting
connections.
2016-05-22 14:52:40 -04:00
Michal Witkowski 1ef2c5293f fix `TestCompressOK` and client reserved HTTP header handling 2016-05-17 14:35:18 +01:00
iamqizhao e4bb85b43f Support the stream interceptor on server side. 2016-04-21 14:58:45 -07:00
iamqizhao 616cb8ecfe Add the missing comment 2016-04-19 16:33:09 -07:00
iamqizhao 310ca08496 gofmt -w 2016-04-19 16:04:09 -07:00
iamqizhao c321387fd9 the installation of server unary interceptor 2016-04-19 15:54:30 -07:00
iamqizhao 61e92eacc3 Phase 1 to add the server interceptor 2016-04-18 16:18:34 -07:00
Qi Zhao fea7689493 Merge pull request #584 from bradfitz/h2
Simplify server setup when testing the http.Handler-based server transport
2016-03-02 10:59:35 -08:00
Brad Fitzpatrick 18b2da6250 Simplify server setup when testing the http.Handler-based server transport
This simplifies the code that's used for wiring up the http.Handler-based
transport for testing. It's not used outside of tests.

http2.Server.ServeConn was added somewhat recently for other reasons and
I just realized it would simplify this code as well.
2016-03-02 18:49:23 +00:00
Brad Fitzpatrick 0f80f5b995 Remove test-only methods from grpc package.
Move the test-only methods to a new internal package so as to not
pollute the godoc, and to prevent people from using them. (Packages
named internal or under internal are private, and enforced by the go
tool)
2016-02-25 13:30:19 -08:00
Qi Zhao 89f694edb4 Merge pull request #569 from bradfitz/error_map
Fix crashes where transports returned errors unhandled by the message parser
2016-02-24 18:22:25 -08:00
Brad Fitzpatrick 110fd99e30 Fix crashes where transports returned errors unhandled by the message parser.
The http.Handler-based transport body reader was returning error types
not understood by the recvMsg parser. See #557 for some background and
examples.

Fix the http.Handler transport and add tests. I copied in a subset of
the http2 package's serverTest type, adapted slightly to work with
grpc. In the process of adding tests, I discovered that
ErrUnexpectedEOF was also not handled by the regular server
transport. Document the rules and fix that crash as well.

Unrelated stuff in this CL:

* make tests listen on localhost:0 instead of :0, to avoid Mac firewall
  pop-up dialogs.

* rename parser.s field to parser.r, to be more idiomatic that it's an
  io.Reader and not anything fancier. (it's not acting like type
  stream, even if that's the typical concrete type)

* move 5 byte temp buffer into parser, rather than allocating it for
  each new message. (drop in the bucket improvement in garbage; more
  to do later)

* rename http2RSTErrConvTab to http2ErrConvTab, per Qi's earlier
  CL. Also add the HTTP/1.1-required error mapping for completeness,
  not that it should ever arise with gRPC, also per Qi's earlier CL
  referenced in #557.
2016-02-24 15:09:17 -08:00
Paul Querna 75fe76716d log error message and source address in handshake error 2016-02-23 11:14:03 -08:00
Brad Fitzpatrick 7346c871b0 Add a ServeHTTP method to *grpc.Server
This adds new http.Handler-based ServerTransport in the process,
reusing the HTTP/2 server code in x/net/http2 or Go 1.6+.

All end2end tests pass with this new ServerTransport.

Fixes grpc/grpc-go#75

Also:
Updates grpc/grpc-go#495 (lets user fix it with middleware in front)
Updates grpc/grpc-go#468 (x/net/http2 validates)
Updates grpc/grpc-go#147 (possible with x/net/http2)
Updates grpc/grpc-go#104 (x/net/http2 does this)
2016-02-12 00:16:28 +00:00
Brad Fitzpatrick 07d3de883f Update Server.Stop docs per code review comments from grpc/grpc-go#540 2016-02-09 23:50:03 +00:00
iamqizhao 854ad3492a refine the comments of grpc.Server.Stop() 2016-02-09 15:22:53 -08:00
iamqizhao 77ccaa8fb2 Close ServerTransport instead of the raw connection 2016-02-08 14:27:06 -08:00
Qi Zhao 93591e7568 Merge pull request #508 from bradfitz/master
server: break up the Server.Serve method into some reusable parts
2016-01-29 15:51:48 -08:00
Brad Fitzpatrick 9d2ecf553a server: break up the Server.Serve method into some reusable parts
Updates grpc/grpc-go#75
2016-01-29 23:20:54 +00:00
iamqizhao af8888dc8d remove Compressor/DecompressorGenerator 2016-01-29 14:38:20 -08:00
iamqizhao 9ec0eadc55 fix a nil map access bug 2016-01-28 18:51:38 -08:00
iamqizhao 35db64de36 Tune the server accepting code 2016-01-28 15:59:36 -08:00