Commit Graph

166 Commits

Author SHA1 Message Date
Kun Zhang 99f5943520
services: HealthCheckingLoadBalancerUtil and HealthCheckingLoadBalancerProvider (#5026)
HealthCheckingLoadBalancerUtil is the public wrapper utility that helps
turn a LoadBalancerFactory into a health-checking capable one.

HealthCheckingRoundRobinLoadBalancerProvider overrides the
RoundRobinLoadBalancerProvider from grpc-core.
2018-11-06 09:14:56 -08:00
Kun Zhang 65bd38476f
services: define SERVICE_NAME_ALL_SERVICES for the empty service name (#5027) 2018-11-02 17:09:22 -07:00
zpencer 3d51756d61
core, services: fix more import lints (#5021) 2018-11-01 16:14:42 -07:00
Kun Zhang f5d0f40bdf
services: client-side health checking main implementation (#5014)
Spec: https://github.com/grpc/proposal/blob/master/A17-client-side-health-checking.md

This comes in the form of a wrapper LoadBalancerFactory. The public wrapping utility and the wrapping of RoundRobinLoadBalancer will come in follow-up changes.
2018-10-31 09:29:46 -07:00
Carl Mastrangelo e8762c941c
services: include an error message in channelz 2018-10-26 16:27:29 -07:00
Carl Mastrangelo 04d8d2d382
services: propagate thrown status exceptions in Channelz 2018-10-26 12:52:52 -07:00
ZHANG Dapeng 41c8d8020f
all: fix lint 2018-10-23 14:03:46 -07:00
Thomas Broyer 183e1f6735 all: update Error Prone to 2.3.2
This will allow enabling Error Prone on JDK 10+ (after
updating the net.ltgt.errorprone plugin), and is also a
prerequisite to that plugin update.

Also remove net.ltgt.apt plugin, as Gradle has native
support for annotationProcessor.
2018-10-19 13:08:36 -07:00
zpencer a2ef4c0dbf
services: update v1alpha reflection.proto to match grpc-proto repo (#4973)
More info: https://github.com/grpc/grpc-proto/pull/38
2018-10-18 16:27:07 -07:00
zpencer 9b5115d5a7
services: remove v1alpha binlog (#4963)
We should use v1 everywhere.
2018-10-17 14:46:56 -07:00
Eric Anderson 959323be97
Add build support for Java 11
It appears everything was already working on Java 11, except
build-specific and testing issues. Updating to Netty 4.1.30 (#4940)
probably fixed the last true Java 11 incompatibility.

Fixes #4933
2018-10-17 11:49:30 -07:00
Kun Zhang 11f9e8d5b4
services: implement Health.Watch (#4930) 2018-10-12 16:02:25 -07:00
zpencer 308887a150
services: fix callbacks not being forwarded in binlog interceptors (#4918) 2018-10-09 10:45:25 -07:00
zpencer 5eb816b3b1
services: fix channelz javadoc lint for reference not found (#4920)
Referring to the public abstract class seems to be OK, but referring
to the package private impl trips the linter.
2018-10-09 09:23:16 -07:00
zpencer f10676c2b4
services: allow config str to be passed into binlog object (#4919)
Do not require binlog str to be defined by env var.

This allows --flag=value styled configuration, which is more common
internally.
2018-10-08 15:44:18 -07:00
Kun Zhang 31328652d4
services: sync health.proto from grpc-proto repo (#4904) 2018-10-03 16:24:09 -07:00
zpencer da87ffb329
core,services: v1 binlog (#4846)
Log using new proto definition

- Remove io.grpc.BinaryLog.CallId because a call ID is now an AtomicLong
- Add the concept of "always included" and "never included" metadata
  keys. This is needed because grpc-status-details-bin is already
  logged in the binlog msg, and we will log grpc-trace-bin for the
  census info.
- unit tests are effectively rewritten
2018-09-27 13:19:24 -07:00
zpencer ed70594294
services: disallow duplicate rules for a binlogging services or methods (#4868)
Let's simplify the impementation to just disallow duplicates. This
makes it easier to maintain.

Background info: https://github.com/grpc/proposal/pull/104
2018-09-21 15:59:37 -07:00
Carl Mastrangelo b0f423295b
all: use Java7 brackets 2018-09-14 13:52:29 -07:00
Carl Mastrangelo 6cf849a7ce
services: fix duration in Binlog test 2018-09-12 17:16:52 -07:00
zpencer 8fc84daa30
services: remove RequireDoubleSubmitCookieInterceptor (#4833)
The CSRF protection has been moved to the proxy implementation. This
is cleaner since the gRPC service should not need to know about
grpc-web.
2018-09-10 18:06:26 -07:00
zpencer 95fd47d747
core, services: remove census from binary logs (#4845)
The exact census span behavior wrt gRPC is not yet defined, so let's
punt on tight integration.

It may be fine to log grpc-trace-bin on server side because it is a
key visible to the application.
2018-09-10 16:35:08 -07:00
zpencer 2fca42feb9
all: prepend internal classes with Internal (#4826)
This is a safer way to hide the classes, because they will not appear
in public targets for some build configurations.
2018-09-05 18:48:42 -07:00
zpencer 4d366ce978
all: move Channelz to io.grpc as InternalChannelz (#4797)
This is an API used to coordinate across packages and must live in
`io.grpc`.

Prepending `Internal` makes it easier to detect and hide this class
from public visibility when using certain build tools.

fixes #4796
2018-09-04 16:52:01 -07:00
Eric Anderson 73b098702c services: Fix binarylog's java_package to include version 2018-08-17 09:38:38 -07:00
Eric Gribkoff 79b24709b9
all: update animalsniffer to Java 7 and add Android 14 (#4727) 2018-08-09 09:09:21 -07:00
Carl Mastrangelo 85448189ee
all: add tracking issues for all experimental APIs and make it required
Additionally, make Status*Exception.getTrailers() non experimental
2018-07-31 15:28:48 -07:00
zpencer f013771bd1
services: binlog status code, msg, details (#4551)
Log these additional bits of info in RPC binary logging
2018-07-17 11:29:45 -07:00
Carl Mastrangelo 146b6006b3
compiler,stub: update RpcMethod docs and usage 2018-07-12 17:01:47 -07:00
zpencer 9925049dce
services: double submit cookie interceptor for channelz (#4628)
Add this form of XSRF protection to channelz. Non web browser clients
calling channelz must also include the cookie header and metadata
key.
2018-07-12 16:45:17 -07:00
zpencer 3181fbcf03
services: add javadocs for binlog constructors (#4637) 2018-07-12 12:57:10 -07:00
jbingham-google ffcb3b964b compiler, stub: Rename inputType and outputType in @RpcMethod 2018-07-10 13:24:50 -07:00
jbingham-google 9229e30287 compiler, stub: Add @RpcMethod annotation
This annotation will enable Java APT to generate code.

Addresses part of #3173.
2018-07-06 17:02:01 -07:00
Eric Gribkoff 8c52e138ee
services: delete unused proto (#4604) 2018-06-29 15:03:08 -07:00
zpencer 5a8b790a3c
services: binlog method name should include leading / char (#4588)
The APIs of the other implementations all begin method names with `/`,
since the binlog is language agnostic we should be aligned.
2018-06-27 11:22:51 -07:00
ZHANG Dapeng 5ce10f0146
all: add gradle format checker
This PR adds an automatic gradle format checker and reformats all the *.gradle files. After this, new changes to *.gradle files will fail to build if not in good format, just like checkStyle failure.
2018-06-11 18:35:18 -07:00
ZHANG Dapeng 9d26c5c405
all: fix lint warnings 2018-06-11 12:57:27 -07:00
zpencer 2a971e3b05
services: binlog deadline and methodName at start of rpc (#4550)
These are first class concepts and should be pulled to top level of
proto.
2018-06-07 19:16:34 -07:00
zpencer c05d0f40ea
services: add sequence id within call for entries (#4549)
This is a new field added to the binlog proto so that we can detect when
the storage impl reorders or drops recorded entries.
2018-06-07 12:19:36 -07:00
zpencer 181aac425f
services: sync binlog proto (#4542)
https://github.com/grpc/grpc-proto/pull/20
2018-06-07 10:45:55 -07:00
Carl Mastrangelo 4c4fda3e5d
stub: remove static Method descriptors and stabilize method accessors 2018-06-05 11:19:28 -07:00
zpencer 29dba1e89f
services: allow binlog to blacklist methods (#4523)
The spec says users can specify a blacklist a method from binlogs by
saying "-package.service/method".
2018-06-04 14:11:55 -07:00
ZHANG Dapeng a0794d5a68
core: Implement channel tracing for some events
Includes 
- API plumbing for channel tracing `+ManagedChannelBuilder.maxTraceEvents()`
- trace logging for channel/subchannel creation events and name resolving events.

Trace logging for all other events will be added in subsequent PRs.
2018-06-01 07:33:37 -07:00
zpencer 43831bc0e8
services: update the binlog message truncation flag (#4508)
The truncation flag tells us whether the msg or meta was truncated.
2018-05-31 18:13:59 -07:00
Nathan Herring 8db8497ef0 services: use RE2/J
RE2/J ensures linear time matching, and as such is preferred over `java.util.regex` for safety in the mono repo. While currently safe, this conversion future-proofs any `Pattern`s in BinlogHelper, and removes the need to maintain an exception for gRPC wrt. use of regexes.
2018-05-30 12:26:02 -07:00
zpencer ff9aa39bb6
core,services: fix lints (#4504)
- Type parameters must be upper camel case
- constant case field must be final
2018-05-24 11:12:30 -07:00
zpencer 27439876f2
services,core: make BinaryLogSink visible, add setter (#4503)
* make BinaryLogSink public
* add io.grpc.BinaryLog to server/channel builder
2018-05-23 20:49:09 -07:00
zpencer 1f99fcdc82
move io.grpc.BinaryLogProvider to io.grpc.services (#4501)
Add internal accessors for ServerInterceptors and ClientInterceptors because some helpers were pkg private
Fix tests that were once creating BinaryLogProvider instances, they should now only create io.grpc.BinaryLog instances
2018-05-23 17:04:48 -07:00
zpencer c60580c669
services: use Peer.address proto (#4502)
address+ip_port is the new way; peer is deprecated
2018-05-23 16:58:15 -07:00
zpencer 869363cdb8
services: sync binarylog.proto (#4500)
Sync from grpc/grpc-proto and rerun codegen.
2018-05-23 16:17:05 -07:00