Releases: grpc/grpc-go
Releases · grpc/grpc-go
Release 1.75.0
Behavior Changes
- xds: Remove support for GRPC_EXPERIMENTAL_XDS_FALLBACK environment variable. Fallback support can no longer be disabled. (#8482)
- stats: Introduce
DelayedPickComplete
event, a type alias ofPickerUpdated
. (#8465)- This (combined) event will now be emitted only once per call, when a transport is successfully selected for the attempt.
- OpenTelemetry metrics will no longer have multiple "Delayed LB pick complete" events in Go, matching other gRPC languages.
- A future release will delete the
PickerUpdated
symbol.
- credentials: Properly apply
grpc.WithAuthority
as the highest-priority option for setting authority, above the setting in the credentials themselves. (#8488)- Now that this
WithAuthority
is available, the credentials should not be used to override the authority.
- Now that this
- round_robin: Randomize the order in which addresses are connected to in order to spread out initial RPC load between clients. (#8438)
- server: Return status code INTERNAL when a client sends more than one request in unary and server streaming RPC. (#8385)
- This is a behavior change but also a bug fix to bring gRPC-Go in line with the gRPC spec.
New Features
- dns: Add an environment variable (
GRPC_ENABLE_TXT_SERVICE_CONFIG
) to provide a way to disable TXT lookups in the DNS resolver (by setting it tofalse
). By default, TXT lookups are enabled, as they were previously. (#8377)
Bug Fixes
- xds: Fix regression preventing empty node IDs in xDS bootstrap configuration. (#8476)
- Special Thanks: @davinci26
- xds: Fix possible panic when certain invalid resources are encountered. (#8412)
- Special Thanks: @wooffie
- xdsclient: Fix a rare panic caused by processing a response from a closed server. (#8389)
- stats: Fix metric unit formatting by enclosing non-standard units like
call
andendpoint
in curly braces to comply with UCUM and gRPC OpenTelemetry guidelines. (#8481) - xds: Fix possible panic when clusters are removed from the xds configuration. (#8428)
- xdsclient: Fix a race causing "resource doesn not exist" when rapidly subscribing and unsubscribing to the same resource. (#8369)
- client: When determining the authority, properly percent-encode (if needed, which is unlikely) when the target string omits the hostname and only specifies a port (
grpc.NewClient(":<port-number-or-name>")
). (#8488)
Release 1.74.2
New Features
- grpc: introduce new
DialOptions
andServerOptions
(WithStaticStreamWindowSize
,WithStaticConnWindowSize
,StaticStreamWindowSize
,StaticConnWindowSize
) that force fixed window sizes for all HTTP/2 connections. By default, gRPC uses dynamic sizing of these windows based upon a BDP estimation algorithm. The existing options (WithInitialWindowSize
, etc) also disable BDP estimation, but this behavior will be changed in a following release. (#8283)
API Changes
- balancer: add
ExitIdle
method toBalancer
interface. Earlier, implementing this method was optional. (#8367)
Behavior Changes
- xds: Remove the
GRPC_EXPERIMENTAL_ENABLE_LEAST_REQUEST
environment variable that allows disabling the least request balancer with xDS. Least request was made available by default with xDS in v1.72.0. (#8248)- Special Thanks: @atollena
- server: allow 0s grpc-timeout header values, which older gRPC-Java versions could send. This restores the behavior of grpc-go before v1.73.0. (#8439)
Bug Fixes
- googledirectpath: avoid logging the error message
Attempt to set a bootstrap configuration...
when creating multiple directpath channels. (#8419)
Performance Improvements
- transport: reduce heap allocations by pooling objects and avoiding method-to-closure conversions. (#8361)
- transport: reduce heap allocations by re-using
mem.Reader
objects. (#8360)
Documentation
- examples: add examples to demonstrate enabling experimental metrics using the OpenTelemetry plugin. (#8388)
- Special Thanks: @vinothkumarr227
Release 1.74.1
Version 1.74.1 retracts release v1.74.0 and itself. Release 1.74.0 was accidentally tagged on the wrong commit and should not be used. Version 1.73.0 should be used until 1.74.2 is released.
Release 1.74.0
Release 1.74.0 was accidentally tagged on the wrong commit and should not be used. Version 1.73.0 should be used until 1.74.1 is released.
Release 1.73.0
New Features
- balancer/ringhash: move LB policy from xds/internal to exported path to facilitate use without xds (#8249)
- xds: enable least request LB policy by default. It can be disabled by setting
GRPC_EXPERIMENTAL_ENABLE_LEAST_REQUEST=false
in your environment. (#8253) - grpc: add a
CallAuthority
Call Option that can be used to overwrite the http:authority
header on per-RPC basis. (#8068) - stats/opentelemetry: add trace event for name resolution delay. (#8074)
- health: added
List
method to gRPC Health service. (#8155)- Special Thanks: @marcoshuck
- ringhash: implement features from gRFC A76. (#8159)
- xds: add functionality to support SPIFFE Bundle Maps as roots of trust in XDS which can be enabled by setting
GRPC_EXPERIMENTAL_XDS_MTLS_SPIFFE=true
. (#8167, #8180, #8229, #8343)
Bug Fixes
- xds: locality ID metric label is changed to make it consistent with gRFC A78. (#8256)
- client: fail RPCs on the client when using extremely short contexts that expire before the
grpc-timeout
header is created. (#8312) - server: non-positive
grpc-timeout
header values are now rejected. This is consistent with the gRPC protocol spec. (#8290)- Special Thanks: @evanj
- xds: fix reported error string when LRS load reporting interval is invalid. (#8224)
- Special Thanks: @alingse
Performance Improvements
- credentials/alts: improve read performance by optimizing buffer copies and allocations. (#8271)
- server: improve performance of RPC handling by avoid a status proto copy (#8282)
- Special Thanks: @evanj
Documentation
- examples/features/opentelemetry: modify example to demonstrate tracing using OpenTelemtry plugin. (#8056)
Release 1.72.2
Release 1.71.3
Release 1.72.1
Release 1.71.2
Bug Fixes
- client: HTTP Proxy connections are no longer attempted for addresses with non-TCP network types. (#8215)
Release 1.72.0
Dependencies
- Minimum supported Go version is now 1.23 (#8108)
API Changes
- resolver: add experimental
AddressMapV2
with generics to ultimately replaceAddressMap
. DeprecateAddressMap
for deletion (#8187) - resolver: convert EndpointMap in place to use generics (#8189)
New Features
- xds: add
grpc.xds_client.server_failure
counter metric on xDS client to record connectivity errors (#8203) - balancer/rls: allow
maxAge
to exceed 5 minutes ifstaleAge
is set in the LB policy configuration (#8137) - ringhash: implement gRFC A76 improvements. (#8159)
- pickfirst: The new pick first LB policy is made the default. The new LB policy implements the Happy Eyeballs algorithm. To disable the new policy set the environment variable
GRPC_EXPERIMENTAL_ENABLE_NEW_PICK_FIRST
tofalse
(case insensitive).
Bug Fixes
- xds: fix support for circuit breakers and load reporting in LOGICAL_DNS clusters (#8169, #8170)
- xds/cds: improve RPC error messages when resources are not found (#8122)
- balancer/priority: fix race that could leak balancers and goroutines during shutdown (#8095)
- stats/opentelemetry: fix trace attributes message sequence numbers to start from 0 (#8237)
- balancer/pickfirstleaf: fix panic if deprecated Address.Metadata field is set to a non-comparable value by ignoring the field (#8227)
Behavior Changes
- transport: make servers send an HTTP/2 RST_STREAM frame to cancel a stream when the deadline expires (#8071)
Documentation
- stats: clarify the expected sequence of events on a stats handler (#7885)
- Special Thanks: @RyanBlaney