Commit Graph

1426 Commits

Author SHA1 Message Date
Xudong Ma cda83191d9 Update the out of date Java doc for ClientTransport.newStream(), and update the caller. 2015-11-24 11:07:51 -08:00
nmittler 61a0d8238f Auto-refill connection window
Fixes #1175
2015-11-24 10:24:00 -08:00
Louis Ryan 73e2a235e7 Notify listeners before notifying child contexts of cancellation
Improve performance of isCancellable check
2015-11-23 13:42:46 -08:00
Kun Zhang ece7402dc8 Clarify specs for target strings, especially for IPv6.
See the javadocs of ManagedChannelBuilder.forTarget().

The most interesting case is passing an IPv6 address as target. It can
be either be passed as an authority, where brackets should not be
escaped ([::1]), or as a path of a full URI, where brackets must be
escaped (dns:///%5B::1%5D).

Previously, dns:///[::1], being an invalid URI (brackets not allowed in
path), would be converted to dns:////dns:///%5B::1%5D and passed to
DnsNameResolver. Though it would fail eventually, the error would be
very confusing to users. I changed the logic so that it would try with
dns:/// only if the target string doesn't look like an intended URI
target.

I have restricted the "URI target" to be absolute and hierarchical,
i.e., must start with scheme://. I couldn't find a way to better tell if
a string is intended to be a URI, but I am open to other options.

Refactored tests:

- Move the tests for getNameResolver() into a separate file
  ManagedChannelImplGetNameResolverTest, because those tests are not
  quite compatible with the facility provided by ManagedChannelImplTest.
- Create DnsNameResolverTest. Move DnsNameResolver out of the factory
  class to accommodate for the test.
2015-11-23 09:06:17 -08:00
Carl Mastrangelo 7de6c04d14 Move decompressor setting to the AbstractServerStream 2015-11-20 13:27:27 -08:00
buchgr 602473d786 Add directExecutor() to Channel and Server Builders. Fixes #368.
When using a direct executor we don't need to wrap calls in a
serializing executor and can thus also avoid the overhead that
comes with it.

Benchmarks show that throughput can be improved substantially.
On my MBP I get a 24% improvement in throughput with also
significantly better latency throughout all percentiles.

(running qps_client and qps_server with --address=localhost:1234 --directexecutor)

=== BEFORE ===
Channels:                       4
Outstanding RPCs per Channel:   10
Server Payload Size:            0
Client Payload Size:            0
50%ile Latency (in micros):     452
90%ile Latency (in micros):     600
95%ile Latency (in micros):     726
99%ile Latency (in micros):     1314
99.9%ile Latency (in micros):   5663
Maximum Latency (in micros):    136447
QPS:                            78498

=== AFTER ===
Channels:                       4
Outstanding RPCs per Channel:   10
Server Payload Size:            0
Client Payload Size:            0
50%ile Latency (in micros):     399
90%ile Latency (in micros):     429
95%ile Latency (in micros):     453
99%ile Latency (in micros):     650
99.9%ile Latency (in micros):   1265
Maximum Latency (in micros):    33855
QPS:                            97552
2015-11-19 20:50:02 +01:00
Jakob Buchgraber e8afcb47ff Fix build failure due to unused import. 2015-11-19 14:26:09 +01:00
nmittler ebed5a624a Upgrading to Netty 4.1.0.Beta8
A few things to note:

- ByteString has gone away in favor of AsciiString.

- Http2Headers now uses CharSequence for all methods, so there are a few places that we have to explicitly check for AsciiString to get the optimizations.

- We now have to specify a graceful shutdown timeout for our Netty handlers. Using 5 seconds.
2015-11-18 11:42:24 -08:00
Julien Boeuf 088def1985 Updating the server1 cert so that it can be used with Go.
The encoding of the issuer field in this cert is now a PRINTABLESTRING
as opposed to UTF8STRING in the previous server1.pem which was causing
the Go issue.

- https://github.com/grpc/grpc/pull/4096
- https://github.com/grpc/grpc-go/pull/442

Sorry I should have done this java PR and have it approved before
submitting the grpc-go and grpc PRs.
2015-11-17 21:43:45 -08:00
Carl Mastrangelo c3e179be60 Split out server call impl, add explicit tests and remove an impossible case 2015-11-17 11:16:29 -08:00
Eric Anderson 76eaae26b8 Enable LB and Naming for Netty.forAddress(String,int)
This swaps to the forTarget() codepath. The constructor is to make it
more convenient when extending the builder to disable checkAuthority.
2015-11-13 19:30:21 -08:00
Kun Zhang 01bf56bf8d Fix placeholder in the error message of Preconditions.
Only '%s' is allowed.
2015-11-13 14:58:35 -08:00
Louis Ryan c40d702068 Switch to use Executor instead of ExecutorService where we don't need it 2015-11-12 15:30:15 -08:00
Carl Mastrangelo b0c626c359 Update Load balancing URI parsing and add tests 2015-11-11 17:50:30 -08:00
Kun Zhang 5529b6489b Create BlankFutureProvider which is reused among LoadBalancers.
If a LoadBalancer is requested for a transport future before it can get
one from TransportManager, e.g., before name resolution is completed,
LoadBalancer will return a blank future created by BlankFutureProvider
and to be linked with real futures later.
2015-11-11 15:20:09 -08:00
Carl Mastrangelo 05b7d75029 Re add support for periods in metadata key names 2015-11-10 15:59:42 -08:00
Carl Mastrangelo 3b82484281 Minor cleanup of ClientCallImpl header normalization 2015-11-10 13:52:06 -08:00
Carl Mastrangelo dc375500d6 Update -bin header restrictions, and re introduce string interning. 2015-11-10 13:40:02 -08:00
Carl Mastrangelo 2ad35b8269 Add Header name character restrictions 2015-11-10 11:20:04 -08:00
Louis Ryan 49b513504c Remove notion of stack from thread-local binding, use simple swapping instead.
This allows for binding state to be reset to known-good states precisely which in turn
facilitates making it safe to have 'detach' not throw exceptions and instead log
a severe error that attach/detach calls were not correctly balanced.
2015-11-09 13:17:18 -08:00
Carl Mastrangelo d2046b637d Allow commas in Metadata values 2015-11-09 12:39:53 -08:00
Carl Mastrangelo e9c9d31704 Add even more coverage 2015-11-09 12:35:24 -08:00
Eric Anderson a5d9e34bd6 Add Executor wrapping to Context 2015-11-09 10:59:53 -08:00
Carl Mastrangelo a691752165 Add simple tests for OkHttpProtocolNegotiator coverage 2015-11-06 13:15:28 -08:00
Kun Zhang 38ba586e0c Migrating from Objects.ToStringHelper to MoreObjects.ToStringHelper.
The former is deprecated.
2015-11-04 10:04:12 -08:00
Nathan Mittler 03ec0b863a Merge pull request #1187 from nmittler/use_serverbuilder_interface
Use ServerBuilder interface in AbstractTransportTest.
2015-11-04 08:42:09 -08:00
nmittler 9a5c9cdcbd Use ServerBuilder interface in AbstractTransportTest. 2015-11-04 08:05:31 -08:00
Nathan Mittler 872ecf4ee2 Merge pull request #1186 from xuwei-k/patch-1
fix typo
2015-11-04 06:54:00 -08:00
kenji yoshida 8301121db0 fix typo 2015-11-04 14:09:14 +09:00
nmittler 8c7e251f41 Allow Netty server override for ProtocolNegotiator
Server implementation had to be refactored to use a ProtocolNegotiator to make this work.
2015-11-02 13:04:37 -08:00
Eric Anderson 7767138c96 Use assertEquals instead of assertTrue(Range.contains)
It likely will produce a better error message and doesn't require using
as large of an API/impl.
2015-11-02 11:07:25 -08:00
Eric Anderson 6229c2ca61 Brew update twice, to work around Brew issue 2015-11-02 09:09:10 -08:00
nmittler e775885be2 Allow client to specify ProtocolNegotiator in NettyChannelBuilder. 2015-11-02 09:02:41 -08:00
nmittler b9195fb9aa Set connectionWindow to MAX_INT.
This is a temporary fix for https://github.com/grpc/grpc-java/issues/1175. We will revisit this change after auto-refill is supported in Netty.
2015-10-30 12:29:31 -07:00
Xudong Ma 750b1977ca Make the header list size limit configurable on both client and server side. 2015-10-30 10:52:47 -07:00
Kun Zhang a4f319f0c3 Clarify the audience of internal API. 2015-10-29 16:32:00 -07:00
nmittler 23e2df9a67 Allowing AbstractBufferingHandler to be extended. 2015-10-29 11:06:09 -07:00
Xudong Ma 52c9aac1c1 [OkHtpp] Correct windowUpdateWithInboundFlowControl test. 2015-10-29 08:52:57 -07:00
Carl Mastrangelo b287d1dbc8 Deflake Call Options test 2015-10-28 13:44:25 -07:00
Carl Mastrangelo c53b5170ca Downgrade mockito, and fix tests 2015-10-28 12:57:10 -07:00
Kun Zhang ac02e206e8 Fix javadocs of NameResolver 2015-10-28 11:50:42 -07:00
Kun Zhang b5b79642c5 Fix a NPE in ManagedChannelImpl.
The error occurs when name resolution completes after the channel is
shut down. What ManagedChannelImpl doing right now is violating the
TransportManager interface, because TransportManager.getTransport()
should never return null.
2015-10-28 11:32:15 -07:00
Eric Anderson cea8e8e4a7 Add tests for nano proto
Since some of the tests would need only minor modification to work for
normal proto, normal proto got a few more tests as well.
2015-10-28 10:00:41 -07:00
Carl Mastrangelo 122f93c26d Add unit tests for SizeEnforcingInputStream 2015-10-28 09:34:46 -07:00
Eric Anderson 353aabce51 Increase coverage for CallOptions 2015-10-28 09:31:42 -07:00
nmittler 3efc61b237 Guard against NPE in Netty handlers
We've seen an NPE as a side-effect of a failure in protocol negotiation:

Oct 27, 2015 9:27:09 PM io.grpc.transport.netty.ProtocolNegotiators$AbstractBufferingHandler fail
SEVERE: Transport failed during protocol negotiation
java.lang.NullPointerException
	at io.grpc.transport.netty.NettyClientHandler$2.visit(NettyClientHandler.java:218)
2015-10-28 08:38:59 -07:00
Xudong Ma a2216f665a Deflake OkHttpClientTransportTest. 2015-10-27 14:26:36 -07:00
Kun Zhang edd57c941e Support default port in NameResolver.
- Channel builders decide the default port based on whether TLS is used.
- Channel builders populate the default port via an Attributes object
  passed to NameResolver.Factory#newNameResolver
2015-10-27 13:54:36 -07:00
Eric Anderson 63f1482ad6 Increase code coverage of Context
A few minor bugs were discovered and fixed.
2015-10-27 11:22:56 -07:00
Carl Mastrangelo 5487c42713 Update okhttp javadoc 2015-10-27 10:10:35 -07:00