Skip to content
Choose a tag to compare


@ejona86 ejona86 released this
· 412 commits to master since this release
Choose a tag to compare

For users requiring Java 7, the later grpc-java 1.44 release dropped support for Java 7. This v1.41.x branch is the selected gathering point for users continuing to require Java 7. See gRFC P5.

API Changes

  • stub: Mark Stub-based MetadataUtils methods deprecated (#8395). The interceptor-based versions have been stable for a long time and are preferred

Bug Fixes

  • census: Fixed a data race in CensusStatsModule which in rare cases may cause NullPointerException (#8459)
  • xds: Fixed a bug in SharedCallCounterMap which in rare cases may cause NullPointerException (#8397)
  • core: ServerCall.isCancelled() and ServerCallStreamObserver.isCancelled() implementations no longer incorrectly return true at the end of every RPC (#8408)
  • core: ManagedChannel no longer immediately exits idle mode after an enterIdle() call when it has any calls in progress
  • netty-shaded: Modify the shading operation to transform native-image resources so they correctly reference shaded class names (#7540)
  • netty-shaded: Rename native-image resources to avoid collisions with Netty’s copy, which were modified starting in 1.39.0
  • rls: avoid NullPointerException in RLS in certain circumstances when calling channel.getState(true) or if a parent load balancer requests a connection (#8379)

New Features

  • xds: xDS-based TLS security (gRFC 29) is now stable
  • util: Added new classes AdvancedTlsX509TrustManager and AdvancedTlsX509KeyManager, which support reloading keys and trust roots as they change. They also can make custom verification easier by handling the hostname verification. (#8175)
  • xds: Added XdsNameResolverProvider.createForTest() to allow using a different bootstrap configuration in tests (#8358)

Behavior Changes

  • rls: migrated the deprecated server and path fields in RouteLookupRequest to using the new extra_keys field in RLS config


  • api: Document that NameResolvers shouldn’t block within their methods (#8398). The offload executor should be used for blocking operations
  • stub: Document StreamObserver is an async API, and how it internally may buffer (#8449)


  • Upgraded error_prone_annotations to 2.9.0
  • cronet: Cronet upgraded to version 92.4515.131