Major Changes
- significant performance improvements around header processing
- generated AbstractService class and interfaces are now deprecated in favor of ServiceImplBase
- made Context is no longer experimental (#1705)
Generated Code / Stub
- static bindService() method is deprecated
- added ClientResponseObsever to interact with advanced features like flow-control
Core
- improved error messages when unable to find a name resolver
- fix onReady race by adding DelayedStreamListener
- added a RoundRobin Loadbalancer
- clarified and extended core documentation (#1479, #714, #986, #1962, #1805)
- fix race with exception in onMessage and onCompleted (#1652)
- made ServiceDescriptor final, and now accepts a collection of methods.
- made ServerInterceptor, BindableService, ServerCallHandler non experimental (#1711, #1701)
- promoted Deadline API no longer be experimental
- added a NameResolverProvider
- remove deprecated ClientCall.cancel overload
- new client calls no longer get their a new context (fixes a stack overflow, #1926)
- made CallOptions accept custom values
- enable per-message compression by default, if a compression method is set.
- added a fail-fast feature, which makes new RPCs fail if there are no connections
- added CallOptions.waitForReady to support fail-fast
- log exceptions from scheduled tasks (#1759)
- implemented ManagedChannel.shutdownNow (#448)
- made URI parsing for targets more robust (#1883)
- increased visibility of Code.status() and Status.fromCode (#1722)
- methodDescriptor argument moved from ServerInterceptor to ServerCall
- added a health checking service (not on by default) (#647)
- server call exception is saved when a message fails to close
- status exceptions can now hold additional metadata
- allow ClientCall.cancel before start. Fixes #1536
- split HandlerRegistry into an immutable default and a fallback for dynamic dispatch
- made Context.fork return a normal Context instead of CancellableContext (1626)
- reduced memory usage when cancelling calls by using the right executor
Examples
- stopped using deprecated generated classes
- added examples to show how to get error information from different stubs
- switch android example to use proto lite instead of nano proto
- moved json encoding examples to the "advanced" package (#1778)
Auth
- added a CallCredentials class for propagating credentials
- promote OAuth2 service accounts to JWT (#785)
- add MoreCallCredentials.from(Credentials) to work with the Google Auth Library
- made ClientAuthInterceptor deprecated
Netty
- fixed a bug when headers could get corrupted during decoding
- use boringssl uberjar
- detect when ALPN was not used. (#522)
- add tests for Netty bug where a channel would break after a RST_STREAM frame (#1682)
- added Trailiers to the Status for BlockingResponseStream (#1861)
- call transportShutdown immediately on ID exhaustion (#1819)
Protobuf
- bump dependency to 3.0.0-beta-3
OkHttp
- fix NPE when using CLEARTEXT connectionSpec (#1815)
Other
- deflake lots of tests based on finding an empty port
- disable flaky test in ClientCallsTest
- improve ClientCall test to fail more obviously
- add test for MessageDeframer closed exception (#1795)
- benchmark transport flag now works in AsyncClient
- always set message encoding in headers, even for the "identy" encoding.
- updated error codes returned to match the specification (#1605)
- added a log message for unknown client streams
- added more detail when recieving GOAWAY
- cause removed from InProcessTransport (#1716)
- setRemoveOnCancelPolicy