Skip to content

Releases: grpc/grpc-go

Release 1.71.0

04 Mar 19:29
d01db5c
Compare
Choose a tag to compare

API Changes

  • balancer: Custom LB policies that record metrics must use the new MetricsRecorder method on Balancer.ClientConn instead of the removed Balancer.BuildOptions.MetricsRecorder field to obtain a metrics recorder. (#8027)
  • balancer: balancer.ClientConn implementations must now embed a delegate implementation. This allows grpc-go to add new methods to the interface and remain backward compatible. (#8026)
  • balancer/endpointsharding: The constructor accepts the child balancer's builder and a struct with optional configuration. (#8052)

New Features

  • xds: Add support for dualstack via the additional_addresses field in the Endpoint resource. To disable this feature, set the environment variable GRPC_EXPERIMENTAL_XDS_DUALSTACK_ENDPOINTS=false. (#8134)
  • stats/opentelemetry: Add experimental support for OpenTelemetry tracing. (#7852)
  • xds/internal/xdsclient: Add counter metrics for valid and invalid resource updates. (#8038)
  • balancer/leastrequest, roundrobin: Add dualstack support. (#7969, #7966)
  • balancer/endpointsharding: Balancers created with the new DisableAutoReconnect option will not attempt to call ExitIdle automatically on their children when the children report idle. (#8052)

Bug Fixes

  • client: Fix support for proxies when using grpc.NewClient so the target is resolved by the proxy as expected. (#7881)
    • Added WithLocalDNSResolution() dial option to explicitly force target resolution on the client instead. (#7881)
  • weightedtarget: Return erroring picker when no targets are configured. (#8070)
  • xds: Fail RPCs with UNAVAILABLE when the EDS resource is missing or contains no endpoints (#8070)
  • xdsclient: Fix a bug where connectivity failures were reported to resource watchers before trying all listed servers. (#8075)
  • grpc: Fix the number of bytes reported in the error message when encoded messages are larger than 4GB. (#8033)
  • xds: Fixed a bug preventing tests from creating multiple servers or channels with different bootstrap configs. (#8050)
  • grpc: Fix message length checks when compression is enabled and maxReceiveMessageSize is MaxInt (#7918)

Documentation

  • client: Improve documentation of grpc.NewClient and ClientConn.CanonicalTarget by providing examples. (#8078)
  • examples/features/dualstack: New example demonstrating usage of endpoints and dualstack functionality. (#8098)

Release 1.70.0

23 Jan 17:45
98a0092
Compare
Choose a tag to compare

Behavior Changes

  • client: reject service configs containing an invalid retryPolicy in accordance with gRFCs A21 and A6. (#7905)
    • Note that this is a potential breaking change for some users using an invalid configuration, but continuing to allow this behavior would violate our cross-language compatibility requirements.

New Features

  • xdsclient: fallback to a secondary management server (if specified in the bootstrap configuration) when the primary is down is enabled by default. Can be disabled by setting the environment variable GRPC_EXPERIMENTAL_XDS_FALLBACK to false. (#7949)
  • experimental/credentials: experimental transport credentials are added which don't enforce ALPN. (#7980)
    • These credentials will be removed in an upcoming grpc-go release. Users must not rely on these credentials directly. Instead, they should either vendor a specific version of gRPC or copy the relevant credentials into their own codebase if absolutely necessary.

Bug Fixes

  • xds: fix a possible deadlock that happens when both the client application and the xDS management server (responsible for configuring the client) are using the xds:/// scheme in their target URIs. (#8011)

Performance

  • server: for unary requests, free raw request message data as soon as parsing is finished instead of waiting until the method handler returns. (#7998)
    • Special Thanks: @lqs

Documentation

  • examples/features/gracefulstop: add example to demonstrate server graceful stop. (#7865)

Release 1.69.4

13 Jan 07:08
4103cfc
Compare
Choose a tag to compare

Bug Fixes

  • rbac: fix support for :path header matchers, which would previously never successfully match (#7965).

Documentation

  • examples/features/csm_observability: update example client and server to use the helloworld service instead of echo service (#7945).

Release 1.69.3

13 Jan 06:11
aad8a12
Compare
Choose a tag to compare

Release 1.69.3 was accidentally tagged on the master branch and will be deleted. Please update to 1.69.4 instead.

Release 1.69.2

18 Dec 18:05
b615b35
Compare
Choose a tag to compare

Bug Fixes

  • stats/experimental: add type aliases for symbols (Metrics/etc) that were moved to the stats package (#7929).
  • client: set user-agent string to the correct version.

Release 1.68.2

18 Dec 16:07
c982e40
Compare
Choose a tag to compare

Dependencies

  • Remove the experimental stats/opentelemetry module and instead add the experimental packages it contains directly into the main google.golang.org/grpc module (#7936)

Release 1.67.3

17 Dec 22:33
117cd63
Compare
Choose a tag to compare

Dependencies

  • Remove the experimental stats/opentelemetry module and instead add the experimental packages it contains directly into the main google.golang.org/grpc module (#7935)

Release 1.69.0

12 Dec 18:31
317271b
Compare
Choose a tag to compare

Known Issues

  • The recently added grpc.NewClient function is incompatible with forward proxies, because it resolves the target hostname on the client instead of passing the hostname to the proxy. A fix is expected to be a part of grpc-go v1.70. (#7556)

New Features

  • stats/opentelemetry: Introduce new APIs to enable OpenTelemetry instrumentation for metrics on servers and clients (#7874)
  • xdsclient: add support to fallback to lower priority servers when higher priority ones are down (#7701)
  • dns: Add support for link local IPv6 addresses (#7889)
  • The new experimental pickfirst LB policy (disabled by default) supports Happy Eyeballs, interleaving IPv4 and IPv6 address as described in RFC-8305 section 4, to attempt connections to multiple backends concurrently. The experimental pickfirst policy can be enabled by setting the environment variable GRPC_EXPERIMENTAL_ENABLE_NEW_PICK_FIRST to true. (#7725, #7742)
  • balancer/pickfirst: Emit metrics from the pick_first load balancing policy (#7839)
  • grpc: export MethodHandler, which is the type of an already-exported field in MethodDesc (#7796)

Bug Fixes

  • credentials/google: set scope for application default credentials (#7887)
  • xds: fix edge-case issues where some clients or servers would not initialize correctly or would not receive errors when resources are invalid or unavailable if another channel or server with the same target was already in use . (#7851, #7853)
  • examples: fix the debugging example, which was broken by a recent change (#7833)

Behavior Changes

  • client: update retry attempt backoff to apply jitter per updates to gRFC A6. (#7869)
  • balancer/weightedroundrobin: use the pick_first LB policy to manage connections (#7826)

API Changes

  • balancer: An internal method is added to the balancer.SubConn interface to force implementors to embed a delegate implementation. This requirement is present in the interface documentation, but wasn't enforced earlier. (#7840)

Performance Improvements

  • mem: implement a ReadAll() method for more efficient io.Reader consumption (#7653)
  • mem: use slice capacity instead of length to determine whether to pool buffers or directly allocate them (#7702)

Documentation

  • examples/csm_observability: Add xDS Credentials and switch server to be xDS enabled (#7875)

Release 1.68.1

04 Dec 18:59
d6a777f
Compare
Choose a tag to compare

Bug Fixes

  • credentials/alts: avoid SRV and TXT lookups for handshaker service to work around hangs caused by buggy versions of systemd-resolved. (#7861)

Dependencies

  • Relax minimum Go version requirement from go1.22.7 to go1.22. (#7831)

Release 1.67.2

04 Dec 19:00
b0e0bf0
Compare
Choose a tag to compare

Bug Fixes

  • credentials/alts: avoid SRV and TXT lookups for handshaker service to work around hangs caused by buggy versions of systemd-resolved. (#7861)