gRPC Java 1.30.0 is released and available on Maven Central and JCenter. 

*gRPC Java 1.30.0 Release Notes*

*Behavioral Changes*

   - netty: Bandwidth delay product (BDP) is enabled by default (#6979 
   <https://github.com/grpc/grpc-java/pull/6979>). BDP dynamically adjusts 
   flow control window to optimize the network bandwidth utilization. To 
   disable this feature, build channel/server with 
   `NettyChannelBuilder#flowControlWindow` or 
   `NettyServerBuilder#flowControlWindow`. Existing `flowControlWindow` users 
   need to use `initialFlowWindowSize` to enable BDP.


*New Features*

   - core: ManagedChannel provides LoadBalancer#Helper with implemented 
   createResolvingOobChannel (#6923 
   <https://github.com/grpc/grpc-java/pull/6923>).
   - stub: Add 
   `ClientCallStreamObserver.disableAutoRequestWithInitial(int)` and 
   `ServerCallStreamObserver.disableAutoRequest()` that disables all automatic 
   inbound flow-control requests. These methods are intended to replace the 
   existing `CallStreamObserver.disableAutoInboundFlowControl()`. There may 
   still be some tweaks to the API, so `disableAutoInboundFlowControl()` is 
   not yet deprecated
   - inprocess,core: add ability to pass status cause to client (#6968 
   <https://github.com/grpc/grpc-java/pull/6968>). The new API is added to 
   `InprocessChannelBuilder` to show stacktrace from transport when an error 
   happens in tests.
   - netty: support setting options of boss in NettyServer (#6947 
   <https://github.com/grpc/grpc-java/pull/6947>). Adds a new API on 
   `NettyServerBuilder` to allow passing channel options for the boss ELG.


*Bug Fixes*

   - okhttp: use new APIs to configure TLS in Android (roll forward of #6959 
   <https://github.com/grpc/grpc-java/pull/6959>) (#6960 
   <https://github.com/grpc/grpc-java/pull/6960>). Starting from Android 
   10, there is a new set of public APIs for configuring TLS, where we were 
   previously invoking hidden methods in SSLSocket. Some of those hidden 
   methods are no longer allowed (will be removed in the future) in Android 
   11. We migrate to use public APIs whenever possible.
   - netty: Using classloader to isolate grpc without isolating netty can 
   cause exceptions when creating netty channel/server is fixed (#7048 
   <https://github.com/grpc/grpc-java/pull/7048>).
   - api, core, services: make ProtoReflectionService interceptor 
   compatible (#6967 <https://github.com/grpc/grpc-java/pull/6967>). 
   Previously intercepting the ProtoReflectionService breaks the internal hack 
   of passing the server instance to the service. Now we change the way of how 
   it obtains the server instance so that applying interceptors to it doesn’t 
   break its functionality. This change also allows multiple servers to use a 
   shared ProtoReflectionService instance.
   - netty: Reduce race window size between GOAWAY and new streams. This 
   should greatly reduce the number of calls that fail with errors similar to 
   “UNAVAILABLE: HTTP/2 error code: NO_ERROR Received Goaway.” Although note 
   that these errors have multiple sources, and it only addresses one of them
   - core: Delay transport shutdown when changing a subchannel’s addresses. 
   This should prevent users from seeing errors saying “UNAVAILABLE: 
   InternalSubchannel closed transport due to address change,” which should 
   have already been rare


*Documentation*

   - For Java 9+ users, we now recommend using 
   `org.apache.tomcat:annotations-api` for the `Generated` annotation instead 
   of `javax.annotation:javax.annotation-api`, as it has a more appropriate 
   license
   - SECURITY.md: add instruction for disabling Conscrypt's default 
   TrustManager (#6962 <https://github.com/grpc/grpc-java/pull/6962>). By 
   default, Conscrypt delegates hostname verification to the platform's 
   default HostNameVerifier, which in OpenJDK is a deny-all implementation. 
   You can configure the Conscrypt provider to not use its TrustManager.


*Dependencies*

   - Starting from this version, some transitive dependencies of gRPC 
   artifacts are changed from compile scope to runtime scope. Users may 
   experience their application can not rebuild once the gRPC version is 
   upgraded, because some other component of the project may require a 
   dependency that is no longer transitively provided by gRPC artifacts at 
   compile time; and if that happens, users should explicitly add that 
   dependency for the other component. This change does not affect running the 
   application at runtime.
   - Bumped protobuf to 3.12.0


*Examples*

   - Deleted example-kotlin (#6936 
   <https://github.com/grpc/grpc-java/pull/6936>). grpc-kotlin 
   <https://github.com/grpc/grpc-kotlin> was officially released and 
   examples can be found in its own repository.

-- 
You received this message because you are subscribed to the Google Groups 
"grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/grpc-io/c3b4cb81-001b-4da0-a6b4-a4bf18abc78cn%40googlegroups.com.

Reply via email to