Skip to content

v1.64.0

Compare
Choose a tag to compare
@temawi temawi released this 15 May 19:57
· 275 commits to master since this release

Avoid upgrading your application to Netty 4.1.111, with this version as there is a possible corruption. For Netty 4.1.111 compatibility, it is best to use 1.63.2, 1.64.2, 1.65.1, and later. See #11284 .

API Changes

  • compiler: the option jakarta_omit was renamed @generated=omit (#11086) (8a21afc)

New Features

  • New API LoadBalancer.getChannelTarget() (4561bb5)
  • opentelemetry: Publish new module grpc-opentelemetry (5ba1a55). The feature is still missing documentation and an example. It only supports metrics; tracing and logs will be future enhancements. See gRFC A66
  • bazel: Add support for bzlmod (#11046) (d1890c0)
  • bazel: Replace usages of the old compatibility maven targets with @maven targets (0064991)
  • okhttp: Support serverBuilder.maxConcurrentCallsPerConnection (Fixes #11062). (#11063) (8050723)
  • xds: Experimental metrics recording in WRR LB (06df25b, 35a171b, 2897b39), to be exported by grpc-opentelemetry if explicitly enabled in GrpcOpenTelemetry. See gRFC A78
  • rls: Experimental metrics recording in RLS LB (a9fb272, a1d1932, 8133318), to be exported by grpc-opentelemetry if explicitly enabled in GrpcOpenTelemetry

Improvements

  • examples: support bazel build for retry policy example (58de563)
  • netty: Allow deframer errors to close stream with a status code, as long as headers have not yet been sent (e036b1b). This will greatly improve the debuggability of certain server errors in particular cases. Instead of the client seeing “CANCELLED: RST_STREAM closed stream. HTTP/2 error code: CANCEL”, they could see “RESOURCE_EXHAUSTED: gRPC message exceeds maximum size 4194304: 6144592”
  • netty: Improve handling of unexpected write queue promise failures (#11016)
  • servlet: Avoid unnecessary FINEST hex string conversion by checking log level. Fixes #11031. (f7ee5f3)
  • StatusException/StatusRuntimeException hide stack trace in a simpler way (#11064) (e36f099)
  • util: Status desc for outlier detection ejection (#11036) (10cb4a3)
  • binder: Helper class to allow in process servers to use peer uids in test (#11014) (537dbe8)
  • Add load() statements for the Bazel builtin top-level java symbols (#11105) (add8c37)
  • Add StatusProto.toStatusException overload to accept Throwable (#11083) (5c9b492)

Bug fixes

  • Fix retry race condition that can lead to double decrementing inFlightSubStreams and so miss calling closed (#11026) (bdb6230)
  • Change defaults to use the older PickFirstLoadBalancer and disable Happy Eyeballs. This disables a performance optimization added in v1.63. (#11120) We have had a report that the new implementation can trigger a NullPointerException
  • core: Transition to CONNECTING immediately when exiting idle (2c5f0c2). Previously the visible state change from channel.getState() was delayed until the name resolver returned results. This had no impact to RPC behavior
  • xds: Specify a locale for upper/lower case conversions (e630593)
  • rls: Synchronization fixes in CachingRlsLbClient (6e97b18). These races had not been witnessed in practice
  • rls: Guarantee backoff will update RLS picker (f9b6e5f). This fixes a regression introduced by 6e97b18 that could hang RPCs instead of using fallback, but fixes a pre-existing bug that could greatly delay RPCs from using fallback.
  • rls: Fix time handling in CachingRlsLbClient (da619e2). This could have caused backoff entries to improperly be considered expired
  • xds: Properly disable the default endpoint identification algorithm with XdsChannelCredentials (097a46b). The credential does its own verification and the default needs to be disabled for SPIFFE
  • netty: Release SendGrpcFrameCommand when stream is missing (#11116) (fb9a108)
  • okhttp: Remove finished stream even if a pending stream was started (d21fe32)

Dependencies

  • cronet: Update Cronet to latest release + Move to Stable Cronet APIs. (5a8da19)
  • cronet: @JavaDoc update android permission MODIFY_NETWORK_ACCOUNTING (deprecated) => UPDATE_DEVICE_STATS (c703a1e)
  • cronet: Update to Java-8 API's and tighten the scopes (163efa3)
  • cronet: Update to StandardCharsets and assertNotNull API's (77e59b2)

Acknowledgements

@panchenko
@Ashok-Varma
@benjaminp
@AutomatedTester
@hypnoce
@keith
@laglangyue
@rostik404
@ryanpbrewster
@abtom
@hvadehra
@rtadepalli