Update module google.golang.org/grpc to v1.84.0 #85

Open
renovate-bot wants to merge 1 commit from renovate/google.golang.org-grpc-1.x into main
Collaborator

This PR contains the following updates:

Package Change Age Confidence
google.golang.org/grpc v1.69.2 → v1.84.0 age confidence

Release Notes

grpc/grpc-go (google.golang.org/grpc)

v1.84.0: Release 1.84.0

Compare Source

Behavior Changes

  • stats/otel: The grpc.lb.pick_first.* metrics have been removed and replaced with grpc.subchannel.* metrics. See gRFC A94 for more details. (#​9215)

New Features

  • xds: Add support for contains_match in route header matchers. (#​9223)

Bug Fixes

  • client: Fix a bug where a ClientConn could get permanently stuck in IDLE when an RPC was canceled during stream creation. Previously, such cancellations triggered stream cleanup twice, corrupting the channel's idleness state and causing subsequent RPCs to fail with deadline exceeded errors. (#​9191)
  • client: Fix a bug where non-gRPC HTTP responses ending with an empty DATA frame failed the RPC with status code Internal instead of preserving the HTTP-mapped status code and response body. (#​9217)
  • credentials: Validate metadata returned by per-RPC credentials, failing the RPC with status code Internal if invalid keys or values are found. Previously, invalid metadata from credentials was sent to the server in outgoing HTTP/2 requests. (#​9202)
  • credentials/sts: Prevent potential token leakage by disallowing HTTP redirects during STS token exchange. Previously, 3xx redirects were followed automatically, replaying the request body containing authentication tokens to the redirect destination. (#​9299)
  • randomsubsetting: Ignore endpoints that contain no addresses. Previously, this could cause the policy to panic while computing hashes. (#​9259)
  • stats/otel: Ensure method names are populated in trace spans when metrics are disabled. Previously, running with tracing enabled and metrics disabled resulted in server trace spans lacking the RPC method name (recording only "Recv."). (#​9262)
  • transport: Return io.ErrUnexpectedEOF when EOF is encountered after partial header or message body reads. Previously, partial reads could return a plain io.EOF, failing to distinguish truncated data from a clean end of stream. (#​9204)
  • transport: Validate metadata supplied by balancers (in PickResult.Metadata) and resolver addresses, failing the RPC with status code Internal if invalid keys or values are found. Previously, invalid metadata from these sources was sent to the server in outgoing HTTP/2 requests. (#​9203)
  • xds: Fix a rare corner case that could prevent a cluster from being removed when it is no longer in use. (#​9140)
  • xds: Fix panic during route matching for routes containing header matchers with empty exact_match strings. (#​9223)
  • xds: Reject routes containing header matchers with empty prefix_match or suffix_match strings. Previously, this caused a panic during route matching. (#​9223)
  • xds: Fix EDS drop policies being applied at a much lower rate than configured due to an integer overflow. (#​9257)
  • xds: Reject EDS resources containing drop policies with unsupported denominators. Previously, such resources caused the client to panic when calculating drop rates. (#​9218)
  • xds/rbac: Reject RBAC configurations containing nested Principal or Permission rules with :scheme or grpc- prefixed header matchers. Previously, such configurations could cause DENY policies to fail open. (#​9258)
  • xds/rbac: Rewrite host header matchers to :authority in nested Principal and Permission rules. Previously, this rewrite only applied to top-level rules, causing nested host matchers to never match incoming requests and DENY policies to fail open. (#​9258)
  • xds/rbac: Reject CidrRanges with an unset prefix length. Previously, an omitted prefix_len field caused a panic during RBAC configuration parsing. (#​9250)

Performance Improvements

  • transport: Avoid a heap allocation when flushing shared write buffers. (#​9233)
  • credentials/alts: Support dynamic frame size negotiation and add the GRPC_GO_EXPERIMENTAL_ALTS_MAX_FRAME_SIZE environment variable (default 4KiB, max 512KiB) to configure the maximum ALTS record frame size. (#​9268)

v1.83.2: Release 1.83.2

Compare Source

Security

  • server: Reject requests missing both :authority and Host headers with HTTP 400 and status Internal. (#​9365)

v1.83.1: Release 1.83.1

Compare Source

Security

  • xds/rbac: Fix a bug where nested Principal or Permission rules with :scheme or grpc- prefixed header matchers were not rejected, which could cause DENY rules to fail open. (#​9258)
  • xds/rbac: Fix a bug where the host header matcher was not being replaced with :authority in nested Principal or Permission rules. (#​9258)
  • xds/rbac: Fix a bug where a header matcher whose name was not lowercase, such as X-Role, matched no header, which could cause DENY rules to fail open. (#​9332)
  • xds/rbac: Fix a bug where a :scheme or grpc- prefixed header matcher was accepted when its name was not lowercase. (#​9332)
  • xds/rbac: Fix a bug where a Host header matcher was not replaced with :authority. (#​9332)

Performance

  • transport: Restrict memory overhead of buffering small data frames. (#​9331)

v1.83.0: Release 1.83.0

Compare Source

Security

  • server: Stop reading from connections when flooded by HTTP/2 frames to mitigate resource exhaustion. The default value for this limit is 100 frames, excluding DATA and HEADERS, and may be changed by setting environment variable GRPC_GO_EXPERIMENTAL_CONTROL_BUFFER_THROTTLE_LIMIT.
  • xds/rbac: Support Metadata and RequestedServerName permissions matcher fields. If present in a DENY rule, previously these would be ignored and fail-open.
  • xds/rbac: Fix panic when parsing unsupported fields in NotRule/NotId permissions.
  • xds/rbac: Support the deprecated source_ip principal identifier by treating it as equivalent to direct_remote_ip.
  • xds: Fix panic when parsing route header matchers configured with empty exact_match, prefix_match, or suffix_match strings. (#​9223)

New Features

  • xds/googlec2p: Enable DirectPath over Interconnect support for on-premises clients via the force-xds target URI query parameter. (#​9133)
  • xds: Enable xDS configuration to control which fields get propagated from ORCA backend metric reports to LRS load reports. (#​9145)
  • authz: Add OnPolicyUpdate callback to FileWatcherOptions to notify when an authz policy is loaded or updated. (#​9142)
  • xds: Add support for the GCP Authentication HTTP Filter, which automatically fetches and attaches GCP Service Account Identity JWT tokens to outgoing RPCs.
    • This feature can be enabled by setting environment variable GRPC_EXPERIMENTAL_XDS_GCP_AUTHENTICATION_FILTER=true. (#​9119)
  • xds: Add support for xDS-based HTTP CONNECT proxies.
    • This feature can be enabled by setting environment variable GRPC_EXPERIMENTAL_XDS_HTTP_CONNECT=true. (#​9151)
  • xds: Add support for contains_match in route header matchers. (#​9223)

Bug Fixes

  • credentials/alts: Fix panic when processing malformed frames by validating that the message frame length exceeds the message type field size. (#​9197)
  • grpc: Fix compilation on Plan 9 targets (GOOS=plan9), broken since v1.81.0. (#​9255)

v1.82.2: Release 1.82.2

Compare Source

Security

  • server: Reject requests missing both :authority and Host headers with HTTP 400 and status Internal. (#​9365)

v1.82.1: Release 1.82.1

Compare Source

Security

  • server: Stop reading from the connection when flooded by HTTP/2 frames. The default value for this limit is 100 frames, excluding DATA and HEADERS, and may be changed by setting environment variable GRPC_GO_EXPERIMENTAL_CONTROL_BUFFER_THROTTLE_LIMIT.
  • xds/rbac: Support Metadata and RequestedServerName permissions matcher fields. If present in a DENY rule, previously these would be ignored and fail-open.
  • xds/rbac: Fix panic when parsing unsupported fields in NotRule/NotId permissions.
  • xds/rbac: Support the deprecated source_ip principal identifier by treating it as equivalent to direct_remote_ip.

v1.82.0: Release 1.82.0

Compare Source

Behavior Changes

  • server: Remove support for GRPC_GO_EXPERIMENTAL_DISABLE_STRICT_PATH_CHECKING environment varibale. Strict incoming RPC path validation (which has been the default since v1.79.3) can no longer be disabled. (#​9112)
  • transport: Add environment variable to change the default max header list size from 16MB to 8KB. This may be enabled by setting GRPC_GO_EXPERIMENTAL_ENABLE_8KB_DEFAULT_HEADER_LIST_SIZE=true. This will be enabled by default in a subsequent release. (#​9019)
  • balancer: Load Balancing policy registry is now case-sensitive. Set GRPC_GO_EXPERIMENTAL_CASE_SENSITIVE_BALANCER_REGISTRIES=false (and file an issue) to revert to case-insensitive behavior. (#​9017)

New Features

  • experimental/stats: Expose a new API, NewContextWithLabelCallback, to register a callback that is invoked when telemetry labels are added. (#​8877)
  • client: Return a portion of the response body in the error message, when the client receives an unexpected non-gRPC HTTP response, to make debugging easier. (#​8929)
  • server: Add environment variable GRPC_GO_SERVER_GOROUTINE_LABELS that controls setting runtime/pprof.Labels on goroutines spawned by the server. Set GRPC_GO_SERVER_GOROUTINE_LABELS=grpc.method=true to add the grpc.method label on goroutines spawned to handle incoming requests. (#​9082)

Bug Fixes

  • xds/server: Fix a memory leak of HTTP filter instances occurring when route configurations are updated in-place during a Route Discovery Service (RDS) update. (#​9138)
  • grpc: In the deprecated gzip Compressor (used via the deprecated WithCompressor dial option), enforce the MaxRecvMsgSize limit on the decompressed message buffer, preventing excessive memory allocation from highly compressed payloads. (#​9114)
  • stats/opentelemetry: Record retry attempts, grpc.previous-rpc-attempts, at the call level and not the attempt level. (#​8923)
  • encoding: Ensure Close() is always called on readers returned from Compressor.Decompress if possible. (#​9135)
  • channelz: Fix the LastMessageSentTimestamp and LastMessageReceivedTimestamp fields in SocketMetrics to ensure they contain correct timestamp values. (#​9109)

v1.81.1: Release 1.81.1

Compare Source

Security

  • xds/rbac: Fix a potential authorization bypass caused by incorrectly falling through URI/DNS SANs to Subject Distinguished Name (DN) when matching the authenticated principal name. With this fix, only the first non-empty identity source will be used, as per gRFC A41. (#​9111)

Bug Fixes

  • otel: Segregate client and server RPC information used for metrics and traces, to avoid one overwriting the other. (#​9081)

v1.81.0: Release 1.81.0

Compare Source

Behavior Changes

  • balancer/rls: Switch gauge metrics to asynchronous emission (once per collection cycle) to reduce telemetry noise and align with other gRPC language implementations. (#​8808)

Dependencies

  • Minimum supported Go version is now 1.25. (#​8969)

Bug Fixes

  • xds: Use the leaf cluster's security config for the TLS handshake instead of the aggregate cluster's config. (#​8956)
  • transport: Send a RST_STREAM when receiving an END_STREAM when the stream is not already half-closed. (#​8832)
  • xds: Fix ADS resource name validation to prevent a panic. (#​8970)

New Features

  • grpc/stats: Add support for custom labels in per-call metrics (gRFC A108). (#​9008)
  • xds: Add support for Server Name Indication (SNI) and SAN validation (gRFC A101). Disabled by default. To enable, set GRPC_EXPERIMENTAL_XDS_SNI=true environment variable. (#​9016)
  • xds: Add support to control which fields get propagated from ORCA backend metric reports to LRS load reports (gRFC A85). Disabled by default. To enable, set GRPC_EXPERIMENTAL_XDS_ORCA_LRS_PROPAGATION=true. (#​9005)
  • xds: Add metrics to track xDS client connectivity and cached resource state (gRFC A78). (#​8807)
  • stats/otel: Enhance grpc.subchannel.disconnections metric by adding disconnection reason to the grpc.disconnect_error label (gRFC A94). This provides granular insights into why subchannels are closing. (#​8973)
  • mem: Add mem.Buffer.Slice() API to slice the buffer like a slice. (#​8977)

Performance Improvements

  • alts: Pool read buffers to lower memory utilization when sockets are unreadable. (#​8964)
  • transport: Pool HTTP/2 framer read buffers to reduce idle memory consumption. Currently limited to Linux for ALTS and non-encrypted transports (TCP, Unix). To disable, set GRPC_GO_EXPERIMENTAL_HTTP_FRAMER_READ_BUFFER_POOLING=false and report any issues. (#​9032)

v1.80.0: Release 1.80.0

Compare Source

Behavior Changes

  • balancer: log a warning if a balancer is registered with uppercase letters, as balancer names should be lowercase. In a future release, balancer names will be treated as case-insensitive; see #​5288 for details. (#​8837)
  • xds: update resource error handling and re-resolution logic (#​8907)
    • Re-resolve all LOGICAL_DNS clusters simultaneously when re-resolution is requested.
    • Fail all in-flight RPCs immediately upon receipt of listener or route resource errors, instead of allowing them to complete.

Bug Fixes

  • xds: support the LB policy configured in LOGICAL_DNS cluster resources instead of defaulting to pick_first. (#​8733)
  • credentials/tls: perform per-RPC authority validation against the leaf certificate instead of the entire peer certificate chain. (#​8831)
  • xds: enabling A76 ring hash endpoint keys no longer causes EDS resources with invalid proxy metadata to be NACKed when HTTP CONNECT (gRFC A86) is disabled. (#​8875)
  • xds: validate that the sum of endpoint weights in a locality does not exceed the maximum uint32 value. (#​8899)
  • xds: fix incorrect proto field access in the weighted round robin (WRR) configuration where blackout_period was used instead of weight_expiration_period. (#​8915)
  • xds/rbac: handle addresses with ports in IP matchers. (#​8990)

New Features

  • ringhash: enable gRFC A76 (endpoint hash keys and request hash headers) by default. (#​8922)

Performance Improvements

  • credentials/alts: pool write buffers to reduce memory allocations and usage. (#​8919)
  • grpc: enable the use of pooled write buffers for buffering HTTP/2 frame writes by default. This reduces memory usage when connections are idle. Use the WithSharedWriteBuffer dial option or the SharedWriteBuffer server option to disable this feature. (#​8957)
  • xds/priority: stop caching child LB policies removed from the configuration. This will help reduce memory and cpu usage when localities are constantly switching between priorities. (#​8997)
  • mem: add a faster tiered buffer pool; use the experimental mem.NewBinaryTieredBufferPool function to create such pools. (#​8775)

v1.79.3: Release 1.79.3

Compare Source

Security

  • server: fix an authorization bypass where malformed :path headers (missing the leading slash) could bypass path-based restricted "deny" rules in interceptors like grpc/authz. Any request with a non-canonical path is now immediately rejected with an Unimplemented error. (#​8981)

v1.79.2: Release 1.79.2

Compare Source

Bug Fixes

  • stats: Prevent redundant error logging in health/ORCA producers by skipping stats/tracing processing when no stats handler is configured. (#​8874)

v1.79.1: Release 1.79.1

Compare Source

Bug Fixes

  • grpc: Remove the -dev suffix from the User-Agent header. (#​8902)

v1.79.0: Release 1.79.0

Compare Source

API Changes

  • mem: Add experimental API SetDefaultBufferPool to change the default buffer pool. (#​8806)
  • experimental/stats: Update MetricsRecorder to require embedding the new UnimplementedMetricsRecorder (a no-op struct) in all implementations for forward compatibility. (#​8780)

Behavior Changes

  • balancer/weightedtarget: Remove handling of Addresses and only handle Endpoints in resolver updates. (#​8841)

New Features

  • experimental/stats: Add support for asynchronous gauge metrics through the new AsyncMetricReporter and RegisterAsyncReporter APIs. (#​8780)
  • pickfirst: Add support for weighted random shuffling of endpoints, as described in gRFC A113.
    • This is enabled by default, and can be turned off using the environment variable GRPC_EXPERIMENTAL_PF_WEIGHTED_SHUFFLING. (#​8864)
  • xds: Implement :authority rewriting, as specified in gRFC A81. (#​8779)
  • balancer/randomsubsetting: Implement the random_subsetting LB policy, as specified in gRFC A68. (#​8650)

Bug Fixes

  • credentials/tls: Fix a bug where the port was not stripped from the authority override before validation. (#​8726)
  • xds/priority: Fix a bug causing delayed failover to lower-priority clusters when a higher-priority cluster is stuck in CONNECTING state. (#​8813)
  • health: Fix a bug where health checks failed for clients using legacy compression options (WithDecompressor or RPCDecompressor). (#​8765)
  • transport: Fix an issue where the HTTP/2 server could skip header size checks when terminating a stream early. (#​8769)
  • server: Propagate status detail headers, if available, when terminating a stream during request header processing. (#​8754)

Performance Improvements

  • credentials/alts: Optimize read buffer alignment to reduce copies. (#​8791)
  • mem: Optimize pooling and creation of buffer objects. (#​8784)
  • transport: Reduce slice re-allocations by reserving slice capacity. (#​8797)

v1.78.0: Release 1.78.0

Compare Source

Behavior Changes

  • client: Align URL validation with Go 1.26+ to now reject target URLs with unbracketed colons in the hostname. (#​8716)
  • transport/client : Return status code Unknown on malformed grpc-status. (#​8735)
    • xds/resolver:
    • Drop previous route resources and report an error when no matching virtual host is found.
    • Only log LDS/RDS configuration errors following a successful update and retain the last valid resource to prevent transient failures. (#​8711)

New Features

  • stats/otel: Add backend service label to weighted round robin metrics as part of A89. (#​8737)
  • stats/otel: Add subchannel metrics (without the disconnection reason) to eventually replace the pickfirst metrics. (#​8738)
  • client: Wait for all pending goroutines to complete when closing a graceful switch balancer. (#​8746)
  • client: Add experimental.AcceptCompressors so callers can restrict the grpc-accept-encoding header advertised for a call. (#​8718)

Bug Fixes

  • xds: Fix a bug in StringMatcher where regexes would match incorrectly when ignore_case is set to true. (#​8723)
  • client:
    • Change connectivity state to CONNECTING when creating the name resolver (as part of exiting IDLE).
    • Change connectivity state to TRANSIENT_FAILURE if name resolver creation fails (as part of exiting IDLE).
    • Change connectivity state to IDLE after idle timeout expires even when current state is TRANSIENT_FAILURE.
    • Fix a bug that resulted in OnFinish call option not being invoked for RPCs where stream creation failed. (#​8710)
  • xdsclient: Fix a race in the xdsClient that could lead to resource-not-found errors. (#​8627)

Performance Improvements

  • mem: Round up to nearest 4KiB for pool allocations larger than 1MiB. (#​8705)

v1.77.0: Release 1.77.0

Compare Source

API Changes

  • mem: Replace the Reader interface with a struct for better performance and maintainability. (#​8669)

Behavior Changes

  • balancer/pickfirst: Remove support for the old pick_first LB policy via the environment variable GRPC_EXPERIMENTAL_ENABLE_NEW_PICK_FIRST=false. The new pick_first has been the default since v1.71.0. (#​8672)

Bug Fixes

  • xdsclient: Fix a race condition in the ADS stream implementation that could result in resource-not-found errors, causing the gRPC client channel to move to TransientFailure. (#​8605)
  • client: Ignore HTTP status header for gRPC streams. (#​8548)
  • client: Set a read deadline when closing a transport to prevent it from blocking indefinitely on a broken connection. (#​8534)
  • client: Fix a bug where default port 443 was not automatically added to addresses without a specified port when sent to a proxy.
    • Setting environment variable GRPC_EXPERIMENTAL_ENABLE_DEFAULT_PORT_FOR_PROXY_TARGET=false disables this change; please file a bug if any problems are encountered as we will remove this option soon. (#​8613)
  • balancer/pickfirst: Fix a bug where duplicate addresses were not being ignored as intended. (#​8611)
  • server: Fix a bug that caused overcounting of channelz metrics for successful and failed streams. (#​8573)
  • balancer/pickfirst: When configured, shuffle addresses in resolver updates that lack endpoints. Since gRPC automatically adds endpoints to resolver updates, this bug only affects custom LB policies that delegate to pick_first but don't set endpoints. (#​8610)
  • mem: Clear large buffers before re-using. (#​8670)

Performance Improvements

New Features

  • outlierdetection: Add metrics specified in gRFC A91. (#​8644)
  • stats/opentelemetry: Add support for optional label grpc.lb.backend_service in per-call metrics (#​8637)
  • xds: Add support for JWT Call Credentials as specified in gRFC A97. Set environment variable GRPC_EXPERIMENTAL_XDS_BOOTSTRAP_CALL_CREDS=true to enable this feature. (#​8536)
  • experimental/stats: Add support for up/down counters. (#​8581)

v1.76.0: Release 1.76.0

Compare Source

Dependencies

Bug Fixes

  • client: Return status INTERNAL when a server sends zero response messages for a unary or client-streaming RPC. (#​8523)
  • client: Fail RPCs with status INTERNAL instead of UNKNOWN upon receiving http headers with status 1xx and END_STREAM flag set. (#​8518)
  • pick_first: Fix race condition that could cause pick_first to get stuck in IDLE state on backend address change. (#​8615)

New Features

  • credentials: Add credentials/jwt package providing file-based JWT PerRPCCredentials (A97). (#​8431)

Performance Improvements

  • client: Improve HTTP/2 header size estimate to reduce re-allocations. (#​8547)
  • encoding/proto: Avoid redundant message size calculation when marshaling. (#​8569)

v1.75.1: Release 1.75.1

Compare Source

Bug Fixes

  • transport: Fix a data race while copying headers for stats handlers in the std lib http2 server transport. (#​8519)
  • xdsclient:
    • Fix a data race caused while reporting load to LRS. (#​8483)
    • Fix regression preventing empty node IDs when creating an LRS client. (#​8483)
  • server: Fix a regression preventing streams from being cancelled or timed out when blocked on flow control. (#​8528)

v1.75.0: Release 1.75.0

Compare Source

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 of PickerUpdated. (#​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.
  • 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 to false). 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)
  • xds: Fix possible panic when certain invalid resources are encountered. (#​8412)
  • 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 and endpoint 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)

v1.74.3: Release 1.74.3

Compare Source

Bug Fixes

  • xds: Fix a regression preventing empty node IDs in the bootstrap configuration. (#​8476 , #​8483)
  • xdsclient: Fix a data race caused while reporting load to LRS. (#​8483)
  • server: Fix a regression preventing streams from being cancelled or timed out when blocked on flow control. (#​8528)

v1.74.2: Release 1.74.2

Compare Source

New Features

  • grpc: introduce new DialOptions and ServerOptions (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 to Balancer 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)
  • 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)

v1.74.1: Release 1.74.1

Compare Source

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.

v1.74.0: Release 1.74.0

Compare Source

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.

v1.73.1: Release 1.73.1

Compare Source

Bug Fixes

  • server: Fix a regression preventing streams from being cancelled or timed out when blocked on flow control. (#​8528)

v1.73.0: Release 1.73.0

Compare Source

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)
  • 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)
  • xds: fix reported error string when LRS load reporting interval is invalid. (#​8224)

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)

Documentation

  • examples/features/opentelemetry: modify example to demonstrate tracing using OpenTelemtry plugin. (#​8056)

v1.72.3: Release 1.72.3

Compare Source

Bug Fixes

  • server: Fix a regression preventing streams from being cancelled or timed out when blocked on flow control. (#​8528)

v1.72.2: Release 1.72.2

Compare Source

Bug Fixes

  • client: restore support for NO_PROXY environment variable when connecting to locally-resolved addresses (case 2 from gRFC A1). (#​8329)
  • balancer/least_request: fix panic on resolver errors. (#​8333)

v1.72.1: Release 1.72.1

Compare Source

Bug Fixes

  • client: HTTP Proxy connections are no longer attempted for addresses with non-TCP network types. (#​8215)
  • client: Fix bug that causes RPCs to fail with status INTERNAL instead of CANCELLED or DEADLINE_EXCEEDED when receiving a RST_STREAM frame in the middle of the gRPC message. (#​8289)

v1.72.0: Release 1.72.0

Compare Source

Dependencies

  • Minimum supported Go version is now 1.23 (#​8108)

API Changes

  • resolver: add experimental AddressMapV2 with generics to ultimately replace AddressMap. Deprecate AddressMap 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 if staleAge 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 to false (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

v1.71.3: Release 1.71.3

Compare Source

Bug Fixes

  • client: restore support for NO_PROXY environment variable when connecting to locally-resolved addresses (case 2 from gRFC A1). (#​8329)
  • balancer/least_request: fix panic on resolver errors. (#​8333)

v1.71.2: Release 1.71.2

Compare Source

Bug Fixes

  • client: HTTP Proxy connections are no longer attempted for addresses with non-TCP network types. (#​8215)

v1.71.1: Release 1.71.1

Compare Source

Bug Fixes

  • grpc: fix a bug causing an extra Read from the compressor if a compressed message is the same size as the limit. This could result in a panic with the built-in gzip compressor (#​8178)
  • xds: restore the behavior of reading the bootstrap config before creating the first xDS client instead of at package init time (#​8164)
  • stats/opentelemetry: use TextMapPropagator and TracerProvider from TraceOptions instead of OpenTelemetry globals (#​8166)
  • client: fix races when an http proxy is configured that could lead to deadlocks or panics (#​8195)
  • client: fix bug causing RPC failures with message "no children to pick from" when using a custom resolver that calls the deprecated NewAddress API (#​8149)
  • wrr: fix slow processing of address updates that could result in problems including RPC failures for servers with a large number of backends (#​8179)

v1.71.0: Release 1.71.0

Compare Source

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)

v1.70.0: Release 1.70.0

Compare Source

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)

Documentation

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

v1.69.4: Release 1.69.4

Compare Source

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).

Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate CLI.

This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [google.golang.org/grpc](https://github.com/grpc/grpc-go) | `v1.69.2` → `v1.84.0` | ![age](https://developer.mend.io/api/mc/badges/age/go/google.golang.org%2fgrpc/v1.84.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/google.golang.org%2fgrpc/v1.69.2/v1.84.0?slim=true) | --- ### Release Notes <details> <summary>grpc/grpc-go (google.golang.org/grpc)</summary> ### [`v1.84.0`](https://github.com/grpc/grpc-go/releases/tag/v1.84.0): Release 1.84.0 [Compare Source](https://github.com/grpc/grpc-go/compare/v1.83.2...v1.84.0) ### Behavior Changes - stats/otel: The `grpc.lb.pick_first.*` metrics have been removed and replaced with `grpc.subchannel.*` metrics. See [gRFC A94](https://github.com/grpc/proposal/blob/master/A94-subchannel-otel-metrics.md) for more details. ([#&#8203;9215](https://github.com/grpc/grpc-go/issues/9215)) ### New Features - xds: Add support for `contains_match` in route header matchers. ([#&#8203;9223](https://github.com/grpc/grpc-go/issues/9223)) - Special Thanks: [@&#8203;nvxbug](https://github.com/nvxbug) ### Bug Fixes - client: Fix a bug where a `ClientConn` could get permanently stuck in IDLE when an RPC was canceled during stream creation. Previously, such cancellations triggered stream cleanup twice, corrupting the channel's idleness state and causing subsequent RPCs to fail with deadline exceeded errors. ([#&#8203;9191](https://github.com/grpc/grpc-go/issues/9191)) - Special Thanks: [@&#8203;utkuozdemir](https://github.com/utkuozdemir) - client: Fix a bug where non-gRPC HTTP responses ending with an empty DATA frame failed the RPC with status code `Internal` instead of preserving the HTTP-mapped status code and response body. ([#&#8203;9217](https://github.com/grpc/grpc-go/issues/9217)) - Special Thanks: [@&#8203;chengxilo](https://github.com/chengxilo) - credentials: Validate metadata returned by per-RPC credentials, failing the RPC with status code `Internal` if invalid keys or values are found. Previously, invalid metadata from credentials was sent to the server in outgoing HTTP/2 requests. ([#&#8203;9202](https://github.com/grpc/grpc-go/issues/9202)) - Special Thanks: [@&#8203;buger](https://github.com/buger) - credentials/sts: Prevent potential token leakage by disallowing HTTP redirects during STS token exchange. Previously, 3xx redirects were followed automatically, replaying the request body containing authentication tokens to the redirect destination. ([#&#8203;9299](https://github.com/grpc/grpc-go/issues/9299)) - Special Thanks: [@&#8203;nvxbug](https://github.com/nvxbug) - randomsubsetting: Ignore endpoints that contain no addresses. Previously, this could cause the policy to panic while computing hashes. ([#&#8203;9259](https://github.com/grpc/grpc-go/issues/9259)) - Special Thanks: [@&#8203;fallintoplace](https://github.com/fallintoplace) - stats/otel: Ensure method names are populated in trace spans when metrics are disabled. Previously, running with tracing enabled and metrics disabled resulted in server trace spans lacking the RPC method name (recording only "Recv."). ([#&#8203;9262](https://github.com/grpc/grpc-go/issues/9262)) - transport: Return `io.ErrUnexpectedEOF` when EOF is encountered after partial header or message body reads. Previously, partial reads could return a plain `io.EOF`, failing to distinguish truncated data from a clean end of stream. ([#&#8203;9204](https://github.com/grpc/grpc-go/issues/9204)) - Special Thanks: [@&#8203;buger](https://github.com/buger) - transport: Validate metadata supplied by balancers (in `PickResult.Metadata`) and resolver addresses, failing the RPC with status code `Internal` if invalid keys or values are found. Previously, invalid metadata from these sources was sent to the server in outgoing HTTP/2 requests. ([#&#8203;9203](https://github.com/grpc/grpc-go/issues/9203)) - Special Thanks: [@&#8203;buger](https://github.com/buger) - xds: Fix a rare corner case that could prevent a cluster from being removed when it is no longer in use. ([#&#8203;9140](https://github.com/grpc/grpc-go/issues/9140)) - xds: Fix panic during route matching for routes containing header matchers with empty `exact_match` strings. ([#&#8203;9223](https://github.com/grpc/grpc-go/issues/9223)) - Special Thanks: [@&#8203;nvxbug](https://github.com/nvxbug) - xds: Reject routes containing header matchers with empty `prefix_match` or `suffix_match` strings. Previously, this caused a panic during route matching. ([#&#8203;9223](https://github.com/grpc/grpc-go/issues/9223)) - Special Thanks: [@&#8203;nvxbug](https://github.com/nvxbug) - xds: Fix EDS drop policies being applied at a much lower rate than configured due to an integer overflow. ([#&#8203;9257](https://github.com/grpc/grpc-go/issues/9257)) - Special Thanks: [@&#8203;nvxbug](https://github.com/nvxbug) - xds: Reject EDS resources containing drop policies with unsupported denominators. Previously, such resources caused the client to panic when calculating drop rates. ([#&#8203;9218](https://github.com/grpc/grpc-go/issues/9218)) - Special Thanks: [@&#8203;nvxbug](https://github.com/nvxbug) - xds/rbac: Reject RBAC configurations containing nested `Principal` or `Permission` rules with `:scheme` or `grpc-` prefixed header matchers. Previously, such configurations could cause DENY policies to fail open. ([#&#8203;9258](https://github.com/grpc/grpc-go/issues/9258)) - Special Thanks: [@&#8203;nvxbug](https://github.com/nvxbug) - xds/rbac: Rewrite `host` header matchers to `:authority` in nested `Principal` and `Permission` rules. Previously, this rewrite only applied to top-level rules, causing nested `host` matchers to never match incoming requests and DENY policies to fail open. ([#&#8203;9258](https://github.com/grpc/grpc-go/issues/9258)) - Special Thanks: [@&#8203;nvxbug](https://github.com/nvxbug) - xds/rbac: Reject `CidrRanges` with an unset prefix length. Previously, an omitted `prefix_len` field caused a panic during RBAC configuration parsing. ([#&#8203;9250](https://github.com/grpc/grpc-go/issues/9250)) - Special Thanks: [@&#8203;nvxbug](https://github.com/nvxbug) ### Performance Improvements - transport: Avoid a heap allocation when flushing shared write buffers. ([#&#8203;9233](https://github.com/grpc/grpc-go/issues/9233)) - Special Thanks: [@&#8203;zaidoon1](https://github.com/zaidoon1) - credentials/alts: Support dynamic frame size negotiation and add the `GRPC_GO_EXPERIMENTAL_ALTS_MAX_FRAME_SIZE` environment variable (default 4KiB, max 512KiB) to configure the maximum ALTS record frame size. ([#&#8203;9268](https://github.com/grpc/grpc-go/issues/9268)) ### [`v1.83.2`](https://github.com/grpc/grpc-go/releases/tag/v1.83.2): Release 1.83.2 [Compare Source](https://github.com/grpc/grpc-go/compare/v1.83.1...v1.83.2) ### Security - server: Reject requests missing both `:authority` and `Host` headers with HTTP 400 and status `Internal`. ([#&#8203;9365](https://github.com/grpc/grpc-go/pull/9365)) - Special Thanks: [@&#8203;winklemad](https://github.com/winklemad) ### [`v1.83.1`](https://github.com/grpc/grpc-go/releases/tag/v1.83.1): Release 1.83.1 [Compare Source](https://github.com/grpc/grpc-go/compare/v1.83.0...v1.83.1) ### Security - xds/rbac: Fix a bug where nested `Principal` or `Permission` rules with `:scheme` or `grpc-` prefixed header matchers were not rejected, which could cause DENY rules to fail open. ([#&#8203;9258](https://github.com/grpc/grpc-go/issues/9258)) - Special Thanks: [@&#8203;nvxbug](https://github.com/nvxbug) - xds/rbac: Fix a bug where the `host` header matcher was not being replaced with `:authority` in nested `Principal` or `Permission` rules. ([#&#8203;9258](https://github.com/grpc/grpc-go/issues/9258)) - Special Thanks: [@&#8203;nvxbug](https://github.com/nvxbug) - xds/rbac: Fix a bug where a header matcher whose name was not lowercase, such as `X-Role`, matched no header, which could cause DENY rules to fail open. ([#&#8203;9332](https://github.com/grpc/grpc-go/issues/9332)) - Special Thanks: [@&#8203;alimony](https://github.com/alimony) - xds/rbac: Fix a bug where a `:scheme` or `grpc-` prefixed header matcher was accepted when its name was not lowercase. ([#&#8203;9332](https://github.com/grpc/grpc-go/issues/9332)) - Special Thanks: [@&#8203;alimony](https://github.com/alimony) - xds/rbac: Fix a bug where a `Host` header matcher was not replaced with `:authority`. ([#&#8203;9332](https://github.com/grpc/grpc-go/issues/9332)) - Special Thanks: [@&#8203;alimony](https://github.com/alimony) ### Performance - transport: Restrict memory overhead of buffering small data frames. ([#&#8203;9331](https://github.com/grpc/grpc-go/issues/9331)) ### [`v1.83.0`](https://github.com/grpc/grpc-go/releases/tag/v1.83.0): Release 1.83.0 [Compare Source](https://github.com/grpc/grpc-go/compare/v1.82.2...v1.83.0) ### Security - server: Stop reading from connections when flooded by HTTP/2 frames to mitigate resource exhaustion. The default value for this limit is 100 frames, excluding DATA and HEADERS, and may be changed by setting environment variable `GRPC_GO_EXPERIMENTAL_CONTROL_BUFFER_THROTTLE_LIMIT`. - xds/rbac: Support `Metadata` and `RequestedServerName` permissions matcher fields. If present in a DENY rule, previously these would be ignored and fail-open. - xds/rbac: Fix panic when parsing unsupported fields in `NotRule`/`NotId` permissions. - xds/rbac: Support the deprecated `source_ip` principal identifier by treating it as equivalent to `direct_remote_ip`. - xds: Fix panic when parsing route header matchers configured with empty `exact_match`, `prefix_match`, or `suffix_match` strings. ([#&#8203;9223](https://github.com/grpc/grpc-go/issues/9223)) ### New Features - xds/googlec2p: Enable DirectPath over Interconnect support for on-premises clients via the `force-xds` target URI query parameter. ([#&#8203;9133](https://github.com/grpc/grpc-go/issues/9133)) - xds: Enable xDS configuration to control which fields get propagated from ORCA backend metric reports to LRS load reports. ([#&#8203;9145](https://github.com/grpc/grpc-go/issues/9145)) - authz: Add `OnPolicyUpdate` callback to `FileWatcherOptions` to notify when an authz policy is loaded or updated. ([#&#8203;9142](https://github.com/grpc/grpc-go/issues/9142)) - Special Thanks: [@&#8203;hnefatl](https://github.com/hnefatl) - xds: Add support for the GCP Authentication HTTP Filter, which automatically fetches and attaches GCP Service Account Identity JWT tokens to outgoing RPCs. - This feature can be enabled by setting environment variable `GRPC_EXPERIMENTAL_XDS_GCP_AUTHENTICATION_FILTER=true`. ([#&#8203;9119](https://github.com/grpc/grpc-go/issues/9119)) - xds: Add support for xDS-based HTTP CONNECT proxies. - This feature can be enabled by setting environment variable `GRPC_EXPERIMENTAL_XDS_HTTP_CONNECT=true`. ([#&#8203;9151](https://github.com/grpc/grpc-go/issues/9151)) - xds: Add support for `contains_match` in route header matchers. ([#&#8203;9223](https://github.com/grpc/grpc-go/issues/9223)) ### Bug Fixes - credentials/alts: Fix panic when processing malformed frames by validating that the message frame length exceeds the message type field size. ([#&#8203;9197](https://github.com/grpc/grpc-go/issues/9197)) - grpc: Fix compilation on Plan 9 targets (`GOOS=plan9`), broken since v1.81.0. ([#&#8203;9255](https://github.com/grpc/grpc-go/issues/9255)) - Special Thanks: [@&#8203;Yusufihsangorgel](https://github.com/Yusufihsangorgel) ### [`v1.82.2`](https://github.com/grpc/grpc-go/releases/tag/v1.82.2): Release 1.82.2 [Compare Source](https://github.com/grpc/grpc-go/compare/v1.82.1...v1.82.2) ### Security - server: Reject requests missing both `:authority` and `Host` headers with HTTP 400 and status `Internal`. ([#&#8203;9365](https://github.com/grpc/grpc-go/pull/9365)) - Special Thanks: [@&#8203;winklemad](https://github.com/winklemad) ### [`v1.82.1`](https://github.com/grpc/grpc-go/releases/tag/v1.82.1): Release 1.82.1 [Compare Source](https://github.com/grpc/grpc-go/compare/v1.82.0...v1.82.1) ### Security - server: Stop reading from the connection when flooded by HTTP/2 frames. The default value for this limit is 100 frames, excluding DATA and HEADERS, and may be changed by setting environment variable `GRPC_GO_EXPERIMENTAL_CONTROL_BUFFER_THROTTLE_LIMIT`. - xds/rbac: Support `Metadata` and `RequestedServerName` permissions matcher fields. If present in a DENY rule, previously these would be ignored and fail-open. - xds/rbac: Fix panic when parsing unsupported fields in `NotRule`/`NotId` permissions. - xds/rbac: Support the deprecated `source_ip` principal identifier by treating it as equivalent to `direct_remote_ip`. ### [`v1.82.0`](https://github.com/grpc/grpc-go/releases/tag/v1.82.0): Release 1.82.0 [Compare Source](https://github.com/grpc/grpc-go/compare/v1.81.1...v1.82.0) ### Behavior Changes - server: Remove support for `GRPC_GO_EXPERIMENTAL_DISABLE_STRICT_PATH_CHECKING` environment varibale. Strict incoming RPC path validation (which has been the default since `v1.79.3`) can no longer be disabled. ([#&#8203;9112](https://github.com/grpc/grpc-go/issues/9112)) - transport: Add environment variable to change the default max header list size from `16MB` to `8KB`. This may be enabled by setting `GRPC_GO_EXPERIMENTAL_ENABLE_8KB_DEFAULT_HEADER_LIST_SIZE=true`. This will be enabled by default in a subsequent release. ([#&#8203;9019](https://github.com/grpc/grpc-go/issues/9019)) - balancer: Load Balancing policy registry is now case-sensitive. Set `GRPC_GO_EXPERIMENTAL_CASE_SENSITIVE_BALANCER_REGISTRIES=false` (and file an issue) to revert to case-insensitive behavior. ([#&#8203;9017](https://github.com/grpc/grpc-go/issues/9017)) ### New Features - experimental/stats: Expose a new API, `NewContextWithLabelCallback`, to register a callback that is invoked when telemetry labels are added. ([#&#8203;8877](https://github.com/grpc/grpc-go/issues/8877)) - Special Thanks: [@&#8203;seth-epps](https://github.com/seth-epps) - client: Return a portion of the response body in the error message, when the client receives an unexpected non-gRPC HTTP response, to make debugging easier. ([#&#8203;8929](https://github.com/grpc/grpc-go/issues/8929)) - Special Thanks: [@&#8203;chengxilo](https://github.com/chengxilo) - server: Add environment variable `GRPC_GO_SERVER_GOROUTINE_LABELS` that controls setting `runtime/pprof.Labels` on goroutines spawned by the server. Set `GRPC_GO_SERVER_GOROUTINE_LABELS=grpc.method=true` to add the `grpc.method` label on goroutines spawned to handle incoming requests. ([#&#8203;9082](https://github.com/grpc/grpc-go/issues/9082)) - Special Thanks: [@&#8203;dfinkel](https://github.com/dfinkel) ### Bug Fixes - xds/server: Fix a memory leak of HTTP filter instances occurring when route configurations are updated in-place during a Route Discovery Service (RDS) update. ([#&#8203;9138](https://github.com/grpc/grpc-go/issues/9138)) - grpc: In the deprecated `gzip` Compressor (used via the deprecated `WithCompressor` dial option), enforce the `MaxRecvMsgSize` limit on the decompressed message buffer, preventing excessive memory allocation from highly compressed payloads. ([#&#8203;9114](https://github.com/grpc/grpc-go/issues/9114)) - Special Thanks: [@&#8203;evilgensec](https://github.com/evilgensec) - stats/opentelemetry: Record retry attempts, `grpc.previous-rpc-attempts`, at the call level and not the attempt level. ([#&#8203;8923](https://github.com/grpc/grpc-go/issues/8923)) - encoding: Ensure `Close()` is always called on readers returned from `Compressor.Decompress` if possible. ([#&#8203;9135](https://github.com/grpc/grpc-go/issues/9135)) - channelz: Fix the `LastMessageSentTimestamp` and `LastMessageReceivedTimestamp` fields in `SocketMetrics` to ensure they contain correct timestamp values. ([#&#8203;9109](https://github.com/grpc/grpc-go/issues/9109)) ### [`v1.81.1`](https://github.com/grpc/grpc-go/releases/tag/v1.81.1): Release 1.81.1 [Compare Source](https://github.com/grpc/grpc-go/compare/v1.81.0...v1.81.1) ### Security - xds/rbac: Fix a potential authorization bypass caused by incorrectly falling through URI/DNS SANs to Subject Distinguished Name (DN) when matching the authenticated principal name. With this fix, only the first non-empty identity source will be used, as per [gRFC A41](https://github.com/grpc/proposal/blob/master/A41-xds-rbac.md). ([#&#8203;9111](https://github.com/grpc/grpc-go/issues/9111)) - Special Thanks: [@&#8203;al4an444](https://github.com/al4an444) ### Bug Fixes - otel: Segregate client and server RPC information used for metrics and traces, to avoid one overwriting the other. ([#&#8203;9081](https://github.com/grpc/grpc-go/issues/9081)) ### [`v1.81.0`](https://github.com/grpc/grpc-go/releases/tag/v1.81.0): Release 1.81.0 [Compare Source](https://github.com/grpc/grpc-go/compare/v1.80.0...v1.81.0) ### Behavior Changes - balancer/rls: Switch gauge metrics to asynchronous emission (once per collection cycle) to reduce telemetry noise and align with other gRPC language implementations. ([#&#8203;8808](https://github.com/grpc/grpc-go/issues/8808)) ### Dependencies - Minimum supported Go version is now 1.25. ([#&#8203;8969](https://github.com/grpc/grpc-go/issues/8969)) ### Bug Fixes - xds: Use the leaf cluster's security config for the TLS handshake instead of the aggregate cluster's config. ([#&#8203;8956](https://github.com/grpc/grpc-go/issues/8956)) - transport: Send a `RST_STREAM` when receiving an `END_STREAM` when the stream is not already half-closed. ([#&#8203;8832](https://github.com/grpc/grpc-go/issues/8832)) - xds: Fix ADS resource name validation to prevent a panic. ([#&#8203;8970](https://github.com/grpc/grpc-go/issues/8970)) ### New Features - grpc/stats: Add support for custom labels in per-call metrics ([gRFC A108](https://github.com/grpc/proposal/blob/master/A108-otel-custom-per-call-label.md)). ([#&#8203;9008](https://github.com/grpc/grpc-go/issues/9008)) - xds: Add support for Server Name Indication (SNI) and SAN validation ([gRFC A101](https://github.com/grpc/proposal/blob/master/A101-SNI-setting-and-SNI-SAN-validation.md)). Disabled by default. To enable, set `GRPC_EXPERIMENTAL_XDS_SNI=true` environment variable. ([#&#8203;9016](https://github.com/grpc/grpc-go/issues/9016)) - xds: Add support to control which fields get propagated from ORCA backend metric reports to LRS load reports ([gRFC A85](https://github.com/grpc/proposal/blob/master/A85-lrs-custom-metrics-changes.md)). Disabled by default. To enable, set `GRPC_EXPERIMENTAL_XDS_ORCA_LRS_PROPAGATION=true`. ([#&#8203;9005](https://github.com/grpc/grpc-go/issues/9005)) - xds: Add metrics to track xDS client connectivity and cached resource state ([gRFC A78](https://github.com/grpc/proposal/blob/master/A78-grpc-metrics-wrr-pf-xds.md)). ([#&#8203;8807](https://github.com/grpc/grpc-go/issues/8807)) - stats/otel: Enhance `grpc.subchannel.disconnections` metric by adding disconnection reason to the `grpc.disconnect_error` label ([gRFC A94](https://github.com/grpc/proposal/blob/master/A94-subchannel-otel-metrics.md)). This provides granular insights into why subchannels are closing. ([#&#8203;8973](https://github.com/grpc/grpc-go/issues/8973)) - mem: Add `mem.Buffer.Slice()` API to slice the buffer like a slice. ([#&#8203;8977](https://github.com/grpc/grpc-go/issues/8977)) - Special Thanks: [@&#8203;ash2k](https://github.com/ash2k) ### Performance Improvements - alts: Pool read buffers to lower memory utilization when sockets are unreadable. ([#&#8203;8964](https://github.com/grpc/grpc-go/issues/8964)) - transport: Pool HTTP/2 framer read buffers to reduce idle memory consumption. Currently limited to Linux for ALTS and non-encrypted transports (TCP, Unix). To disable, set `GRPC_GO_EXPERIMENTAL_HTTP_FRAMER_READ_BUFFER_POOLING=false` and report any issues. ([#&#8203;9032](https://github.com/grpc/grpc-go/issues/9032)) ### [`v1.80.0`](https://github.com/grpc/grpc-go/releases/tag/v1.80.0): Release 1.80.0 [Compare Source](https://github.com/grpc/grpc-go/compare/v1.79.3...v1.80.0) ### Behavior Changes - balancer: log a warning if a balancer is registered with uppercase letters, as balancer names should be lowercase. In a future release, balancer names will be treated as case-insensitive; see [#&#8203;5288](https://github.com/grpc/grpc-go/issues/5288) for details. ([#&#8203;8837](https://github.com/grpc/grpc-go/issues/8837)) - xds: update resource error handling and re-resolution logic ([#&#8203;8907](https://github.com/grpc/grpc-go/issues/8907)) - Re-resolve all `LOGICAL_DNS` clusters simultaneously when re-resolution is requested. - Fail all in-flight RPCs immediately upon receipt of listener or route resource errors, instead of allowing them to complete. ### Bug Fixes - xds: support the LB policy configured in `LOGICAL_DNS` cluster resources instead of defaulting to `pick_first`. ([#&#8203;8733](https://github.com/grpc/grpc-go/issues/8733)) - credentials/tls: perform per-RPC authority validation against the leaf certificate instead of the entire peer certificate chain. ([#&#8203;8831](https://github.com/grpc/grpc-go/issues/8831)) - xds: enabling A76 ring hash endpoint keys no longer causes EDS resources with invalid proxy metadata to be NACKed when HTTP CONNECT (gRFC A86) is disabled. ([#&#8203;8875](https://github.com/grpc/grpc-go/issues/8875)) - xds: validate that the sum of endpoint weights in a locality does not exceed the maximum `uint32` value. ([#&#8203;8899](https://github.com/grpc/grpc-go/issues/8899)) - Special Thanks: [@&#8203;RAVEYUS](https://github.com/RAVEYUS) - xds: fix incorrect proto field access in the weighted round robin (WRR) configuration where `blackout_period` was used instead of `weight_expiration_period`. ([#&#8203;8915](https://github.com/grpc/grpc-go/issues/8915)) - Special Thanks: [@&#8203;gregbarasch](https://github.com/gregbarasch) - xds/rbac: handle addresses with ports in IP matchers. ([#&#8203;8990](https://github.com/grpc/grpc-go/issues/8990)) ### New Features - ringhash: enable gRFC A76 (endpoint hash keys and request hash headers) by default. ([#&#8203;8922](https://github.com/grpc/grpc-go/issues/8922)) ### Performance Improvements - credentials/alts: pool write buffers to reduce memory allocations and usage. ([#&#8203;8919](https://github.com/grpc/grpc-go/issues/8919)) - grpc: enable the use of pooled write buffers for buffering HTTP/2 frame writes by default. This reduces memory usage when connections are idle. Use the [WithSharedWriteBuffer](https://pkg.go.dev/google.golang.org/grpc#WithSharedWriteBuffer) dial option or the [SharedWriteBuffer](https://pkg.go.dev/google.golang.org/grpc#SharedWriteBuffer) server option to disable this feature. ([#&#8203;8957](https://github.com/grpc/grpc-go/issues/8957)) - xds/priority: stop caching child LB policies removed from the configuration. This will help reduce memory and cpu usage when localities are constantly switching between priorities. ([#&#8203;8997](https://github.com/grpc/grpc-go/issues/8997)) - mem: add a faster tiered buffer pool; use the experimental [mem.NewBinaryTieredBufferPool](https://pkg.go.dev/google.golang.org/grpc/mem@master#NewBinaryTieredBufferPool) function to create such pools. ([#&#8203;8775](https://github.com/grpc/grpc-go/issues/8775)) ### [`v1.79.3`](https://github.com/grpc/grpc-go/releases/tag/v1.79.3): Release 1.79.3 [Compare Source](https://github.com/grpc/grpc-go/compare/v1.79.2...v1.79.3) ### Security - server: fix an authorization bypass where malformed :path headers (missing the leading slash) could bypass path-based restricted "deny" rules in interceptors like `grpc/authz`. Any request with a non-canonical path is now immediately rejected with an `Unimplemented` error. ([#&#8203;8981](https://github.com/grpc/grpc-go/issues/8981)) ### [`v1.79.2`](https://github.com/grpc/grpc-go/releases/tag/v1.79.2): Release 1.79.2 [Compare Source](https://github.com/grpc/grpc-go/compare/v1.79.1...v1.79.2) ### Bug Fixes - stats: Prevent redundant error logging in health/ORCA producers by skipping stats/tracing processing when no stats handler is configured. ([#&#8203;8874](https://github.com/grpc/grpc-go/pull/8874)) ### [`v1.79.1`](https://github.com/grpc/grpc-go/releases/tag/v1.79.1): Release 1.79.1 [Compare Source](https://github.com/grpc/grpc-go/compare/v1.79.0...v1.79.1) ### Bug Fixes - grpc: Remove the `-dev` suffix from the User-Agent header. ([#&#8203;8902](https://github.com/grpc/grpc-go/pull/8902)) ### [`v1.79.0`](https://github.com/grpc/grpc-go/releases/tag/v1.79.0): Release 1.79.0 [Compare Source](https://github.com/grpc/grpc-go/compare/v1.78.0...v1.79.0) ### API Changes - mem: Add experimental API `SetDefaultBufferPool` to change the default buffer pool. ([#&#8203;8806](https://github.com/grpc/grpc-go/issues/8806)) - Special Thanks: [@&#8203;vanja-p](https://github.com/vanja-p) - experimental/stats: Update `MetricsRecorder` to require embedding the new `UnimplementedMetricsRecorder` (a no-op struct) in all implementations for forward compatibility. ([#&#8203;8780](https://github.com/grpc/grpc-go/issues/8780)) ### Behavior Changes - balancer/weightedtarget: Remove handling of `Addresses` and only handle `Endpoints` in resolver updates. ([#&#8203;8841](https://github.com/grpc/grpc-go/issues/8841)) ### New Features - experimental/stats: Add support for asynchronous gauge metrics through the new `AsyncMetricReporter` and `RegisterAsyncReporter` APIs. ([#&#8203;8780](https://github.com/grpc/grpc-go/issues/8780)) - pickfirst: Add support for weighted random shuffling of endpoints, as described in [gRFC A113](https://github.com/grpc/proposal/pull/535). - This is enabled by default, and can be turned off using the environment variable `GRPC_EXPERIMENTAL_PF_WEIGHTED_SHUFFLING`. ([#&#8203;8864](https://github.com/grpc/grpc-go/issues/8864)) - xds: Implement `:authority` rewriting, as specified in [gRFC A81](https://github.com/grpc/proposal/blob/master/A81-xds-authority-rewriting.md). ([#&#8203;8779](https://github.com/grpc/grpc-go/issues/8779)) - balancer/randomsubsetting: Implement the `random_subsetting` LB policy, as specified in [gRFC A68](https://github.com/grpc/proposal/blob/master/A68-random-subsetting.md). ([#&#8203;8650](https://github.com/grpc/grpc-go/issues/8650)) - Special Thanks: [@&#8203;marek-szews](https://github.com/marek-szews) ### Bug Fixes - credentials/tls: Fix a bug where the port was not stripped from the authority override before validation. ([#&#8203;8726](https://github.com/grpc/grpc-go/issues/8726)) - Special Thanks: [@&#8203;Atul1710](https://github.com/Atul1710) - xds/priority: Fix a bug causing delayed failover to lower-priority clusters when a higher-priority cluster is stuck in `CONNECTING` state. ([#&#8203;8813](https://github.com/grpc/grpc-go/issues/8813)) - health: Fix a bug where health checks failed for clients using legacy compression options (`WithDecompressor` or `RPCDecompressor`). ([#&#8203;8765](https://github.com/grpc/grpc-go/issues/8765)) - Special Thanks: [@&#8203;sanki92](https://github.com/sanki92) - transport: Fix an issue where the HTTP/2 server could skip header size checks when terminating a stream early. ([#&#8203;8769](https://github.com/grpc/grpc-go/issues/8769)) - Special Thanks: [@&#8203;joybestourous](https://github.com/joybestourous) - server: Propagate status detail headers, if available, when terminating a stream during request header processing. ([#&#8203;8754](https://github.com/grpc/grpc-go/issues/8754)) - Special Thanks: [@&#8203;joybestourous](https://github.com/joybestourous) ### Performance Improvements - credentials/alts: Optimize read buffer alignment to reduce copies. ([#&#8203;8791](https://github.com/grpc/grpc-go/issues/8791)) - mem: Optimize pooling and creation of `buffer` objects. ([#&#8203;8784](https://github.com/grpc/grpc-go/issues/8784)) - transport: Reduce slice re-allocations by reserving slice capacity. ([#&#8203;8797](https://github.com/grpc/grpc-go/issues/8797)) ### [`v1.78.0`](https://github.com/grpc/grpc-go/releases/tag/v1.78.0): Release 1.78.0 [Compare Source](https://github.com/grpc/grpc-go/compare/v1.77.0...v1.78.0) ### Behavior Changes - client: Align URL validation with Go 1.26+ to now reject target URLs with unbracketed colons in the hostname. ([#&#8203;8716](https://github.com/grpc/grpc-go/issues/8716)) - Special Thanks: [@&#8203;neild](https://github.com/neild) - transport/client : Return status code `Unknown` on malformed grpc-status. ([#&#8203;8735](https://github.com/grpc/grpc-go/issues/8735)) - - xds/resolver: - Drop previous route resources and report an error when no matching virtual host is found. - Only log LDS/RDS configuration errors following a successful update and retain the last valid resource to prevent transient failures. ([#&#8203;8711](https://github.com/grpc/grpc-go/issues/8711)) ### New Features - stats/otel: Add backend service label to weighted round robin metrics as part of A89. ([#&#8203;8737](https://github.com/grpc/grpc-go/issues/8737)) - stats/otel: Add subchannel metrics (without the disconnection reason) to eventually replace the pickfirst metrics. ([#&#8203;8738](https://github.com/grpc/grpc-go/issues/8738)) - client: Wait for all pending goroutines to complete when closing a graceful switch balancer. ([#&#8203;8746](https://github.com/grpc/grpc-go/issues/8746)) - Special Thanks: [@&#8203;twz123](https://github.com/twz123) - client: Add `experimental.AcceptCompressors` so callers can restrict the `grpc-accept-encoding` header advertised for a call. ([#&#8203;8718](https://github.com/grpc/grpc-go/issues/8718)) - Special Thanks: [@&#8203;iblancasa](https://github.com/iblancasa) ### Bug Fixes - xds: Fix a bug in `StringMatcher` where regexes would match incorrectly when ignore\_case is set to true. ([#&#8203;8723](https://github.com/grpc/grpc-go/issues/8723)) - client: - Change connectivity state to CONNECTING when creating the name resolver (as part of exiting IDLE). - Change connectivity state to TRANSIENT\_FAILURE if name resolver creation fails (as part of exiting IDLE). - Change connectivity state to IDLE after idle timeout expires even when current state is TRANSIENT\_FAILURE. - Fix a bug that resulted in `OnFinish` call option not being invoked for RPCs where stream creation failed. ([#&#8203;8710](https://github.com/grpc/grpc-go/issues/8710)) - xdsclient: Fix a race in the xdsClient that could lead to resource-not-found errors. ([#&#8203;8627](https://github.com/grpc/grpc-go/issues/8627)) ### Performance Improvements - mem: Round up to nearest 4KiB for pool allocations larger than 1MiB. ([#&#8203;8705](https://github.com/grpc/grpc-go/issues/8705)) - Special Thanks: [@&#8203;cjc25](https://github.com/cjc25) ### [`v1.77.0`](https://github.com/grpc/grpc-go/releases/tag/v1.77.0): Release 1.77.0 [Compare Source](https://github.com/grpc/grpc-go/compare/v1.76.0...v1.77.0) ### API Changes - mem: Replace the `Reader` interface with a struct for better performance and maintainability. ([#&#8203;8669](https://github.com/grpc/grpc-go/issues/8669)) ### Behavior Changes - balancer/pickfirst: Remove support for the old `pick_first` LB policy via the environment variable `GRPC_EXPERIMENTAL_ENABLE_NEW_PICK_FIRST=false`. The new `pick_first` has been the default since `v1.71.0`. ([#&#8203;8672](https://github.com/grpc/grpc-go/issues/8672)) ### Bug Fixes - xdsclient: Fix a race condition in the ADS stream implementation that could result in `resource-not-found` errors, causing the gRPC client channel to move to `TransientFailure`. ([#&#8203;8605](https://github.com/grpc/grpc-go/issues/8605)) - client: Ignore HTTP status header for gRPC streams. ([#&#8203;8548](https://github.com/grpc/grpc-go/issues/8548)) - client: Set a read deadline when closing a transport to prevent it from blocking indefinitely on a broken connection. ([#&#8203;8534](https://github.com/grpc/grpc-go/issues/8534)) - Special Thanks: [@&#8203;jgold2-stripe](https://github.com/jgold2-stripe) - client: Fix a bug where default port 443 was not automatically added to addresses without a specified port when sent to a proxy. - Setting environment variable `GRPC_EXPERIMENTAL_ENABLE_DEFAULT_PORT_FOR_PROXY_TARGET=false` disables this change; please file a bug if any problems are encountered as we will remove this option soon. ([#&#8203;8613](https://github.com/grpc/grpc-go/issues/8613)) - balancer/pickfirst: Fix a bug where duplicate addresses were not being ignored as intended. ([#&#8203;8611](https://github.com/grpc/grpc-go/issues/8611)) - server: Fix a bug that caused overcounting of channelz metrics for successful and failed streams. ([#&#8203;8573](https://github.com/grpc/grpc-go/issues/8573)) - Special Thanks: [@&#8203;hugehoo](https://github.com/hugehoo) - balancer/pickfirst: When configured, shuffle addresses in resolver updates that lack endpoints. Since gRPC automatically adds endpoints to resolver updates, this bug only affects custom LB policies that delegate to `pick_first` but don't set endpoints. ([#&#8203;8610](https://github.com/grpc/grpc-go/issues/8610)) - mem: Clear large buffers before re-using. ([#&#8203;8670](https://github.com/grpc/grpc-go/issues/8670)) ### Performance Improvements - transport: Reduce heap allocations to reduce time spent in garbage collection. ([#&#8203;8624](https://github.com/grpc/grpc-go/issues/8624), [#&#8203;8630](https://github.com/grpc/grpc-go/issues/8630), [#&#8203;8639](https://github.com/grpc/grpc-go/issues/8639), [#&#8203;8668](https://github.com/grpc/grpc-go/issues/8668)) - transport: Avoid copies when reading and writing Data frames. ([#&#8203;8657](https://github.com/grpc/grpc-go/issues/8657), [#&#8203;8667](https://github.com/grpc/grpc-go/issues/8667)) - mem: Avoid clearing newly allocated buffers. ([#&#8203;8670](https://github.com/grpc/grpc-go/issues/8670)) ### New Features - outlierdetection: Add metrics specified in [gRFC A91](https://github.com/grpc/proposal/blob/master/A91-outlier-detection-metrics.md). ([#&#8203;8644](https://github.com/grpc/grpc-go/issues/8644)) - Special Thanks: [@&#8203;davinci26](https://github.com/davinci26), [@&#8203;PardhuKonakanchi](https://github.com/PardhuKonakanchi) - stats/opentelemetry: Add support for optional label `grpc.lb.backend_service` in per-call metrics ([#&#8203;8637](https://github.com/grpc/grpc-go/issues/8637)) - xds: Add support for JWT Call Credentials as specified in [gRFC A97](https://github.com/grpc/proposal/blob/master/A97-xds-jwt-call-creds.md). Set environment variable `GRPC_EXPERIMENTAL_XDS_BOOTSTRAP_CALL_CREDS=true` to enable this feature. ([#&#8203;8536](https://github.com/grpc/grpc-go/issues/8536)) - Special Thanks: [@&#8203;dimpavloff](https://github.com/dimpavloff) - experimental/stats: Add support for up/down counters. ([#&#8203;8581](https://github.com/grpc/grpc-go/issues/8581)) ### [`v1.76.0`](https://github.com/grpc/grpc-go/releases/tag/v1.76.0): Release 1.76.0 [Compare Source](https://github.com/grpc/grpc-go/compare/v1.75.1...v1.76.0) ### Dependencies - Minimum supported Go version is now 1.24 ([#&#8203;8509](https://github.com/grpc/grpc-go/issues/8509)) - Special Thanks: [@&#8203;kevinGC](https://github.com/kevinGC) ### Bug Fixes - client: Return status `INTERNAL` when a server sends zero response messages for a unary or client-streaming RPC. ([#&#8203;8523](https://github.com/grpc/grpc-go/issues/8523)) - client: Fail RPCs with status `INTERNAL` instead of `UNKNOWN` upon receiving http headers with status 1xx and `END_STREAM` flag set. ([#&#8203;8518](https://github.com/grpc/grpc-go/issues/8518)) - Special Thanks: [@&#8203;vinothkumarr227](https://github.com/vinothkumarr227) - pick\_first: Fix race condition that could cause pick\_first to get stuck in `IDLE` state on backend address change. ([#&#8203;8615](https://github.com/grpc/grpc-go/issues/8615)) ### New Features - credentials: Add `credentials/jwt` package providing file-based JWT PerRPCCredentials (A97). ([#&#8203;8431](https://github.com/grpc/grpc-go/issues/8431)) - Special Thanks: [@&#8203;dimpavloff](https://github.com/dimpavloff) ### Performance Improvements - client: Improve HTTP/2 header size estimate to reduce re-allocations. ([#&#8203;8547](https://github.com/grpc/grpc-go/issues/8547)) - encoding/proto: Avoid redundant message size calculation when marshaling. ([#&#8203;8569](https://github.com/grpc/grpc-go/issues/8569)) - Special Thanks: [@&#8203;rs-unity](https://github.com/rs-unity) ### [`v1.75.1`](https://github.com/grpc/grpc-go/releases/tag/v1.75.1): Release 1.75.1 [Compare Source](https://github.com/grpc/grpc-go/compare/v1.75.0...v1.75.1) ### Bug Fixes - transport: Fix a data race while copying headers for stats handlers in the std lib http2 server transport. ([#&#8203;8519](https://github.com/grpc/grpc-go/issues/8519)) - xdsclient: - Fix a data race caused while reporting load to LRS. ([#&#8203;8483](https://github.com/grpc/grpc-go/pull/8483)) - Fix regression preventing empty node IDs when creating an LRS client. ([#&#8203;8483](https://github.com/grpc/grpc-go/issues/8483)) - server: Fix a regression preventing streams from being cancelled or timed out when blocked on flow control. ([#&#8203;8528](https://github.com/grpc/grpc-go/issues/8528)) ### [`v1.75.0`](https://github.com/grpc/grpc-go/releases/tag/v1.75.0): Release 1.75.0 [Compare Source](https://github.com/grpc/grpc-go/compare/v1.74.3...v1.75.0) ### Behavior Changes - xds: Remove support for GRPC\_EXPERIMENTAL\_XDS\_FALLBACK environment variable. Fallback support can no longer be disabled. ([#&#8203;8482](https://github.com/grpc/grpc-go/issues/8482)) - stats: Introduce `DelayedPickComplete` event, a type alias of `PickerUpdated`. ([#&#8203;8465](https://github.com/grpc/grpc-go/issues/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. ([#&#8203;8488](https://github.com/grpc/grpc-go/issues/8488)) - Now that this `WithAuthority` is available, the credentials should not be used to override the authority. - round\_robin: Randomize the order in which addresses are connected to in order to spread out initial RPC load between clients. ([#&#8203;8438](https://github.com/grpc/grpc-go/issues/8438)) - server: Return status code INTERNAL when a client sends more than one request in unary and server streaming RPC. ([#&#8203;8385](https://github.com/grpc/grpc-go/issues/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 to `false`). By default, TXT lookups are enabled, as they were previously. ([#&#8203;8377](https://github.com/grpc/grpc-go/issues/8377)) ### Bug Fixes - xds: Fix regression preventing empty node IDs in xDS bootstrap configuration. ([#&#8203;8476](https://github.com/grpc/grpc-go/issues/8476)) - Special Thanks: [@&#8203;davinci26](https://github.com/davinci26) - xds: Fix possible panic when certain invalid resources are encountered. ([#&#8203;8412](https://github.com/grpc/grpc-go/issues/8412)) - Special Thanks: [@&#8203;wooffie](https://github.com/wooffie) - xdsclient: Fix a rare panic caused by processing a response from a closed server. ([#&#8203;8389](https://github.com/grpc/grpc-go/issues/8389)) - stats: Fix metric unit formatting by enclosing non-standard units like `call` and `endpoint` in curly braces to comply with UCUM and gRPC OpenTelemetry guidelines. ([#&#8203;8481](https://github.com/grpc/grpc-go/issues/8481)) - xds: Fix possible panic when clusters are removed from the xds configuration. ([#&#8203;8428](https://github.com/grpc/grpc-go/issues/8428)) - xdsclient: Fix a race causing "resource doesn not exist" when rapidly subscribing and unsubscribing to the same resource. ([#&#8203;8369](https://github.com/grpc/grpc-go/issues/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>")`). ([#&#8203;8488](https://github.com/grpc/grpc-go/issues/8488)) ### [`v1.74.3`](https://github.com/grpc/grpc-go/releases/tag/v1.74.3): Release 1.74.3 [Compare Source](https://github.com/grpc/grpc-go/compare/v1.74.2...v1.74.3) ### Bug Fixes - xds: Fix a regression preventing empty node IDs in the bootstrap configuration. ([#&#8203;8476](https://github.com/grpc/grpc-go/issues/8476) , [#&#8203;8483](https://github.com/grpc/grpc-go/issues/8483)) - xdsclient: Fix a data race caused while reporting load to LRS. ([#&#8203;8483](https://github.com/grpc/grpc-go/issues/8483)) - server: Fix a regression preventing streams from being cancelled or timed out when blocked on flow control. ([#&#8203;8528](https://github.com/grpc/grpc-go/issues/8528)) ### [`v1.74.2`](https://github.com/grpc/grpc-go/releases/tag/v1.74.2): Release 1.74.2 [Compare Source](https://github.com/grpc/grpc-go/compare/v1.74.1...v1.74.2) ### New Features - grpc: introduce new `DialOptions` and `ServerOptions` (`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. ([#&#8203;8283](https://github.com/grpc/grpc-go/issues/8283)) ### API Changes - balancer: add `ExitIdle` method to `Balancer` interface. Earlier, implementing this method was optional. ([#&#8203;8367](https://github.com/grpc/grpc-go/issues/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. ([#&#8203;8248](https://github.com/grpc/grpc-go/issues/8248)) - Special Thanks: [@&#8203;atollena](https://github.com/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. ([#&#8203;8439](https://github.com/grpc/grpc-go/issues/8439)) ### Bug Fixes - googledirectpath: avoid logging the error message `Attempt to set a bootstrap configuration...` when creating multiple directpath channels. ([#&#8203;8419](https://github.com/grpc/grpc-go/issues/8419)) ### Performance Improvements - transport: reduce heap allocations by pooling objects and avoiding method-to-closure conversions. ([#&#8203;8361](https://github.com/grpc/grpc-go/issues/8361)) - transport: reduce heap allocations by re-using `mem.Reader` objects. ([#&#8203;8360](https://github.com/grpc/grpc-go/issues/8360)) ### Documentation - examples: add examples to demonstrate enabling experimental metrics using the OpenTelemetry plugin. ([#&#8203;8388](https://github.com/grpc/grpc-go/issues/8388)) - Special Thanks: [@&#8203;vinothkumarr227](https://github.com/vinothkumarr227) ### [`v1.74.1`](https://github.com/grpc/grpc-go/releases/tag/v1.74.1): Release 1.74.1 [Compare Source](https://github.com/grpc/grpc-go/compare/v1.74.0...v1.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. ### [`v1.74.0`](https://github.com/grpc/grpc-go/releases/tag/v1.74.0): Release 1.74.0 [Compare Source](https://github.com/grpc/grpc-go/compare/v1.73.1...v1.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. ### [`v1.73.1`](https://github.com/grpc/grpc-go/releases/tag/v1.73.1): Release 1.73.1 [Compare Source](https://github.com/grpc/grpc-go/compare/v1.73.0...v1.73.1) ### Bug Fixes - server: Fix a regression preventing streams from being cancelled or timed out when blocked on flow control. ([#&#8203;8528](https://github.com/grpc/grpc-go/pull/8528)) ### [`v1.73.0`](https://github.com/grpc/grpc-go/releases/tag/v1.73.0): Release 1.73.0 [Compare Source](https://github.com/grpc/grpc-go/compare/v1.72.3...v1.73.0) ### New Features - balancer/ringhash: move LB policy from xds/internal to exported path to facilitate use without xds ([#&#8203;8249](https://github.com/grpc/grpc-go/issues/8249)) - xds: enable least request LB policy by default. It can be disabled by setting `GRPC_EXPERIMENTAL_ENABLE_LEAST_REQUEST=false` in your environment. ([#&#8203;8253](https://github.com/grpc/grpc-go/issues/8253)) - grpc: add a `CallAuthority` Call Option that can be used to overwrite the http `:authority` header on per-RPC basis. ([#&#8203;8068](https://github.com/grpc/grpc-go/issues/8068)) - stats/opentelemetry: add trace event for name resolution delay. ([#&#8203;8074](https://github.com/grpc/grpc-go/issues/8074)) - health: added `List` method to gRPC Health service. ([#&#8203;8155](https://github.com/grpc/grpc-go/issues/8155)) - Special Thanks: [@&#8203;marcoshuck](https://github.com/marcoshuck) - ringhash: implement features from gRFC A76. ([#&#8203;8159](https://github.com/grpc/grpc-go/issues/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`. ([#&#8203;8167](https://github.com/grpc/grpc-go/issues/8167), [#&#8203;8180](https://github.com/grpc/grpc-go/issues/8180), [#&#8203;8229](https://github.com/grpc/grpc-go/issues/8229), [#&#8203;8343](https://github.com/grpc/grpc-go/issues/8343)) ### Bug Fixes - xds: locality ID metric label is changed to make it consistent with [gRFC A78](https://github.com/grpc/proposal/blob/master/A78-grpc-metrics-wrr-pf-xds.md#optional-xds-locality-label). ([#&#8203;8256](https://github.com/grpc/grpc-go/issues/8256)) - client: fail RPCs on the client when using extremely short contexts that expire before the `grpc-timeout` header is created. ([#&#8203;8312](https://github.com/grpc/grpc-go/issues/8312)) - server: non-positive `grpc-timeout` header values are now rejected. This is consistent with the [gRPC protocol spec](https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests). ([#&#8203;8290](https://github.com/grpc/grpc-go/issues/8290)) - Special Thanks: [@&#8203;evanj](https://github.com/evanj) - xds: fix reported error string when LRS load reporting interval is invalid. ([#&#8203;8224](https://github.com/grpc/grpc-go/issues/8224)) - Special Thanks: [@&#8203;alingse](https://github.com/alingse) ### Performance Improvements - credentials/alts: improve read performance by optimizing buffer copies and allocations. ([#&#8203;8271](https://github.com/grpc/grpc-go/issues/8271)) - server: improve performance of RPC handling by avoid a status proto copy ([#&#8203;8282](https://github.com/grpc/grpc-go/issues/8282)) - Special Thanks: [@&#8203;evanj](https://github.com/evanj) ### Documentation - examples/features/opentelemetry: modify example to demonstrate tracing using OpenTelemtry plugin. ([#&#8203;8056](https://github.com/grpc/grpc-go/issues/8056)) ### [`v1.72.3`](https://github.com/grpc/grpc-go/releases/tag/v1.72.3): Release 1.72.3 [Compare Source](https://github.com/grpc/grpc-go/compare/v1.72.2...v1.72.3) ### Bug Fixes - server: Fix a regression preventing streams from being cancelled or timed out when blocked on flow control. ([#&#8203;8528](https://github.com/grpc/grpc-go/pull/8528)) ### [`v1.72.2`](https://github.com/grpc/grpc-go/releases/tag/v1.72.2): Release 1.72.2 [Compare Source](https://github.com/grpc/grpc-go/compare/v1.72.1...v1.72.2) ### Bug Fixes - client: restore support for `NO_PROXY` environment variable when connecting to locally-resolved addresses (case 2 from [gRFC A1](https://github.com/grpc/proposal/blob/master/A1-http-connect-proxy-support.md)). ([#&#8203;8329](https://github.com/grpc/grpc-go/issues/8329)) - balancer/least\_request: fix panic on resolver errors. ([#&#8203;8333](https://github.com/grpc/grpc-go/issues/8333)) ### [`v1.72.1`](https://github.com/grpc/grpc-go/releases/tag/v1.72.1): Release 1.72.1 [Compare Source](https://github.com/grpc/grpc-go/compare/v1.72.0...v1.72.1) ### Bug Fixes - client: HTTP Proxy connections are no longer attempted for addresses with non-TCP network types. ([#&#8203;8215](https://github.com/grpc/grpc-go/issues/8215)) - client: Fix bug that causes RPCs to fail with status INTERNAL instead of CANCELLED or DEADLINE\_EXCEEDED when receiving a RST\_STREAM frame in the middle of the gRPC message. ([#&#8203;8289](https://github.com/grpc/grpc-go/issues/8289)) ### [`v1.72.0`](https://github.com/grpc/grpc-go/releases/tag/v1.72.0): Release 1.72.0 [Compare Source](https://github.com/grpc/grpc-go/compare/v1.71.3...v1.72.0) ### Dependencies - Minimum supported Go version is now 1.23 ([#&#8203;8108](https://github.com/grpc/grpc-go/issues/8108)) ### API Changes - resolver: add experimental `AddressMapV2` with generics to ultimately replace `AddressMap`. Deprecate `AddressMap` for deletion ([#&#8203;8187](https://github.com/grpc/grpc-go/issues/8187)) - resolver: convert EndpointMap in place to use generics ([#&#8203;8189](https://github.com/grpc/grpc-go/issues/8189)) ### New Features - xds: add `grpc.xds_client.server_failure` counter metric on xDS client to record connectivity errors ([#&#8203;8203](https://github.com/grpc/grpc-go/issues/8203)) - balancer/rls: allow `maxAge` to exceed 5 minutes if `staleAge` is set in the LB policy configuration ([#&#8203;8137](https://github.com/grpc/grpc-go/issues/8137)) - ringhash: implement [gRFC A76](https://github.com/grpc/proposal/blob/master/A76-ring-hash-improvements.md) improvements. ([#&#8203;8159](https://github.com/grpc/grpc-go/issues/8159)) - pickfirst: The new pick first LB policy is made the default. The new LB policy implements the [Happy Eyeballs algorithm](https://github.com/grpc/proposal/blob/master/A61-IPv4-IPv6-dualstack-backends.md#happy-eyeballs-in-the-pick_first-lb-policy). To disable the new policy set the environment variable `GRPC_EXPERIMENTAL_ENABLE_NEW_PICK_FIRST` to `false` (case insensitive). ### Bug Fixes - xds: fix support for circuit breakers and load reporting in LOGICAL\_DNS clusters ([#&#8203;8169](https://github.com/grpc/grpc-go/issues/8169), [#&#8203;8170](https://github.com/grpc/grpc-go/issues/8170)) - xds/cds: improve RPC error messages when resources are not found ([#&#8203;8122](https://github.com/grpc/grpc-go/issues/8122)) - balancer/priority: fix race that could leak balancers and goroutines during shutdown ([#&#8203;8095](https://github.com/grpc/grpc-go/issues/8095)) - stats/opentelemetry: fix trace attributes message sequence numbers to start from 0 ([#&#8203;8237](https://github.com/grpc/grpc-go/issues/8237)) - balancer/pickfirstleaf: fix panic if deprecated Address.Metadata field is set to a non-comparable value by ignoring the field ([#&#8203;8227](https://github.com/grpc/grpc-go/issues/8227)) ### Behavior Changes - transport: make servers send an HTTP/2 RST\_STREAM frame to cancel a stream when the deadline expires ([#&#8203;8071](https://github.com/grpc/grpc-go/issues/8071)) ### Documentation - stats: clarify the expected sequence of events on a stats handler ([#&#8203;7885](https://github.com/grpc/grpc-go/issues/7885)) - Special Thanks: [@&#8203;RyanBlaney](https://github.com/RyanBlaney) ### [`v1.71.3`](https://github.com/grpc/grpc-go/releases/tag/v1.71.3): Release 1.71.3 [Compare Source](https://github.com/grpc/grpc-go/compare/v1.71.2...v1.71.3) ### Bug Fixes - client: restore support for `NO_PROXY` environment variable when connecting to locally-resolved addresses (case 2 from [gRFC A1](https://github.com/grpc/proposal/blob/master/A1-http-connect-proxy-support.md)). ([#&#8203;8329](https://github.com/grpc/grpc-go/issues/8329)) - balancer/least\_request: fix panic on resolver errors. ([#&#8203;8333](https://github.com/grpc/grpc-go/issues/8333)) ### [`v1.71.2`](https://github.com/grpc/grpc-go/releases/tag/v1.71.2): Release 1.71.2 [Compare Source](https://github.com/grpc/grpc-go/compare/v1.71.1...v1.71.2) ### Bug Fixes - client: HTTP Proxy connections are no longer attempted for addresses with non-TCP network types. ([#&#8203;8215](https://github.com/grpc/grpc-go/issues/8215)) ### [`v1.71.1`](https://github.com/grpc/grpc-go/releases/tag/v1.71.1): Release 1.71.1 [Compare Source](https://github.com/grpc/grpc-go/compare/v1.71.0...v1.71.1) ### Bug Fixes - grpc: fix a bug causing an extra Read from the compressor if a compressed message is the same size as the limit. This could result in a panic with the built-in gzip compressor ([#&#8203;8178](https://github.com/grpc/grpc-go/issues/8178)) - xds: restore the behavior of reading the bootstrap config before creating the first xDS client instead of at package init time ([#&#8203;8164](https://github.com/grpc/grpc-go/issues/8164)) - stats/opentelemetry: use `TextMapPropagator` and `TracerProvider` from `TraceOptions` instead of OpenTelemetry globals ([#&#8203;8166](https://github.com/grpc/grpc-go/issues/8166)) - client: fix races when an http proxy is configured that could lead to deadlocks or panics ([#&#8203;8195](https://github.com/grpc/grpc-go/issues/8195)) - client: fix bug causing RPC failures with message "no children to pick from" when using a custom resolver that calls the deprecated `NewAddress` API ([#&#8203;8149](https://github.com/grpc/grpc-go/issues/8149)) - wrr: fix slow processing of address updates that could result in problems including RPC failures for servers with a large number of backends ([#&#8203;8179](https://github.com/grpc/grpc-go/issues/8179)) ### [`v1.71.0`](https://github.com/grpc/grpc-go/releases/tag/v1.71.0): Release 1.71.0 [Compare Source](https://github.com/grpc/grpc-go/compare/v1.70.0...v1.71.0) ### 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. ([#&#8203;8027](https://github.com/grpc/grpc-go/issues/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. ([#&#8203;8026](https://github.com/grpc/grpc-go/issues/8026)) - balancer/endpointsharding: The constructor accepts the child balancer's builder and a struct with optional configuration. ([#&#8203;8052](https://github.com/grpc/grpc-go/issues/8052)) ### New Features - xds: Add support for dualstack via the [additional\_addresses](https://github.com/envoyproxy/envoy/blob/df394a41c8587d1da4e97e156554e93ceee3c720/api/envoy/config/endpoint/v3/endpoint_components.proto#L91-L96) field in the Endpoint resource. To disable this feature, set the environment variable `GRPC_EXPERIMENTAL_XDS_DUALSTACK_ENDPOINTS=false`. ([#&#8203;8134](https://github.com/grpc/grpc-go/issues/8134)) - stats/opentelemetry: Add experimental support for OpenTelemetry tracing. ([#&#8203;7852](https://github.com/grpc/grpc-go/issues/7852)) - xds/internal/xdsclient: Add counter metrics for valid and invalid resource updates. ([#&#8203;8038](https://github.com/grpc/grpc-go/issues/8038)) - balancer/leastrequest, roundrobin: Add dualstack support. ([#&#8203;7969](https://github.com/grpc/grpc-go/issues/7969), [#&#8203;7966](https://github.com/grpc/grpc-go/issues/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. ([#&#8203;8052](https://github.com/grpc/grpc-go/issues/8052)) ### Bug Fixes - client: Fix support for proxies when using `grpc.NewClient` so the target is resolved by the proxy as expected. ([#&#8203;7881](https://github.com/grpc/grpc-go/issues/7881)) - Added `WithLocalDNSResolution()` dial option to explicitly force target resolution on the client instead. ([#&#8203;7881](https://github.com/grpc/grpc-go/issues/7881)) - weightedtarget: Return erroring picker when no targets are configured. ([#&#8203;8070](https://github.com/grpc/grpc-go/issues/8070)) - xds: Fail RPCs with `UNAVAILABLE` when the EDS resource is missing or contains no endpoints ([#&#8203;8070](https://github.com/grpc/grpc-go/issues/8070)) - xdsclient: Fix a bug where connectivity failures were reported to resource watchers before trying all listed servers. ([#&#8203;8075](https://github.com/grpc/grpc-go/issues/8075)) - grpc: Fix the number of bytes reported in the error message when encoded messages are larger than 4GB. ([#&#8203;8033](https://github.com/grpc/grpc-go/issues/8033)) - xds: Fixed a bug preventing tests from creating multiple servers or channels with different bootstrap configs. ([#&#8203;8050](https://github.com/grpc/grpc-go/issues/8050)) - grpc: Fix message length checks when compression is enabled and `maxReceiveMessageSize` is `MaxInt` ([#&#8203;7918](https://github.com/grpc/grpc-go/issues/7918)) - Special Thanks: [@&#8203;vinothkumarr227](https://github.com/vinothkumarr227) ### Documentation - client: Improve documentation of `grpc.NewClient` and `ClientConn.CanonicalTarget` by providing examples. ([#&#8203;8078](https://github.com/grpc/grpc-go/issues/8078)) - examples/features/dualstack: New example demonstrating usage of endpoints and dualstack functionality. ([#&#8203;8098](https://github.com/grpc/grpc-go/issues/8098)) ### [`v1.70.0`](https://github.com/grpc/grpc-go/releases/tag/v1.70.0): Release 1.70.0 [Compare Source](https://github.com/grpc/grpc-go/compare/v1.69.4...v1.70.0) ### Behavior Changes - client: reject service configs containing an invalid retryPolicy in accordance with gRFCs [A21](https://github.com/grpc/proposal/blob/master/A21-service-config-error-handling.md) and [A6](https://github.com/grpc/proposal/blob/master/A6-client-retries.md). ([#&#8203;7905](https://github.com/grpc/grpc-go/issues/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`. ([#&#8203;7949](https://github.com/grpc/grpc-go/issues/7949)) - experimental/credentials: experimental transport credentials are added which don't enforce ALPN. ([#&#8203;7980](https://github.com/grpc/grpc-go/issues/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. ([#&#8203;8011](https://github.com/grpc/grpc-go/issues/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. ([#&#8203;7998](https://github.com/grpc/grpc-go/issues/7998)) - Special Thanks: [@&#8203;lqs](https://github.com/lqs) ### Documentation - examples/features/gracefulstop: add example to demonstrate server graceful stop. ([#&#8203;7865](https://github.com/grpc/grpc-go/issues/7865)) ### [`v1.69.4`](https://github.com/grpc/grpc-go/releases/tag/v1.69.4): Release 1.69.4 [Compare Source](https://github.com/grpc/grpc-go/compare/v1.69.2...v1.69.4) ### Bug Fixes - rbac: fix support for :path header matchers, which would previously never successfully match ([#&#8203;7965](https://github.com/grpc/grpc-go/issues/7965)). ### Documentation - examples/features/csm\_observability: update example client and server to use the helloworld service instead of echo service ([#&#8203;7945](https://github.com/grpc/grpc-go/issues/7945)). </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNC4xIiwidXBkYXRlZEluVmVyIjoiNDQuNzQuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
Author
Collaborator

ℹ️ Artifact update notice

File name: go.mod

In order to perform the update(s) described in the table above, Renovate ran the go get command, which resulted in the following additional change(s):

  • 5 additional dependencies were updated
  • The go directive was updated for compatibility reasons

Details:

Package Change
go 1.23 -> 1.25.0
golang.org/x/net v0.33.0 -> v0.57.0
golang.org/x/sys v0.30.0 -> v0.47.0
golang.org/x/text v0.21.0 -> v0.40.0
google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53 -> v0.0.0-20260706201446-f0a921348800
google.golang.org/protobuf v1.36.5 -> v1.36.11
### ℹ️ Artifact update notice ##### File name: go.mod In order to perform the update(s) described in the table above, Renovate ran the `go get` command, which resulted in the following additional change(s): - 5 additional dependencies were updated - The `go` directive was updated for compatibility reasons Details: | **Package** | **Change** | | :------------------------------------------ | :--------------------------------------------------------------------------- | | `go` | `1.23` -> `1.25.0` | | `golang.org/x/net` | `v0.33.0` -> `v0.57.0` | | `golang.org/x/sys` | `v0.30.0` -> `v0.47.0` | | `golang.org/x/text` | `v0.21.0` -> `v0.40.0` | | `google.golang.org/genproto/googleapis/rpc` | `v0.0.0-20241015192408-796eee8c2d53` -> `v0.0.0-20260706201446-f0a921348800` | | `google.golang.org/protobuf` | `v1.36.5` -> `v1.36.11` |
renovate-bot force-pushed renovate/google.golang.org-grpc-1.x from 3b2495bfa8
Some checks failed
build / build (pull_request) Failing after 12s
to 208d10fec8
Some checks failed
build / build (pull_request) Failing after 15s
2026-03-06 12:02:41 +00:00
Compare
renovate-bot changed title from Update module google.golang.org/grpc to v1.79.1 to Update module google.golang.org/grpc to v1.79.2 2026-03-06 12:02:45 +00:00
renovate-bot force-pushed renovate/google.golang.org-grpc-1.x from 208d10fec8
Some checks failed
build / build (pull_request) Failing after 15s
to 4ed8234759
Some checks failed
build / build (pull_request) Failing after 19s
2026-03-18 12:04:40 +00:00
Compare
renovate-bot changed title from Update module google.golang.org/grpc to v1.79.2 to Update module google.golang.org/grpc to v1.79.3 2026-03-18 12:04:45 +00:00
renovate-bot force-pushed renovate/google.golang.org-grpc-1.x from 4ed8234759
Some checks failed
build / build (pull_request) Failing after 19s
to 207104e660
Some checks failed
build / build (pull_request) Failing after 18s
2026-04-01 12:06:24 +00:00
Compare
renovate-bot changed title from Update module google.golang.org/grpc to v1.79.3 to Update module google.golang.org/grpc to v1.80.0 2026-04-01 12:06:29 +00:00
renovate-bot force-pushed renovate/google.golang.org-grpc-1.x from 207104e660
Some checks failed
build / build (pull_request) Failing after 18s
to 74080fd9fd
Some checks failed
build / build (pull_request) Failing after 22s
2026-05-04 12:05:54 +00:00
Compare
renovate-bot changed title from Update module google.golang.org/grpc to v1.80.0 to Update module google.golang.org/grpc to v1.81.0 2026-05-04 12:05:57 +00:00
renovate-bot force-pushed renovate/google.golang.org-grpc-1.x from 74080fd9fd
Some checks failed
build / build (pull_request) Failing after 22s
to d762f5c198
Some checks failed
build / build (pull_request) Failing after 15s
2026-05-15 12:06:12 +00:00
Compare
renovate-bot changed title from Update module google.golang.org/grpc to v1.81.0 to Update module google.golang.org/grpc to v1.81.1 2026-05-15 12:06:16 +00:00
renovate-bot force-pushed renovate/google.golang.org-grpc-1.x from d762f5c198
Some checks failed
build / build (pull_request) Failing after 15s
to 2a790e17b1
Some checks failed
build / build (pull_request) Failing after 12s
2026-07-01 16:09:57 +00:00
Compare
renovate-bot changed title from Update module google.golang.org/grpc to v1.81.1 to Update module google.golang.org/grpc to v1.82.0 2026-07-01 16:10:01 +00:00
renovate-bot force-pushed renovate/google.golang.org-grpc-1.x from 2a790e17b1
Some checks failed
build / build (pull_request) Failing after 12s
to a3de705d39
Some checks failed
build / build (pull_request) Failing after 12s
2026-07-16 12:07:59 +00:00
Compare
renovate-bot changed title from Update module google.golang.org/grpc to v1.82.0 to Update module google.golang.org/grpc to v1.82.1 2026-07-16 12:08:04 +00:00
renovate-bot force-pushed renovate/google.golang.org-grpc-1.x from a3de705d39
Some checks failed
build / build (pull_request) Failing after 12s
to ac6f1e9bbe
Some checks failed
build / build (pull_request) Failing after 14s
2026-07-30 12:09:33 +00:00
Compare
renovate-bot changed title from Update module google.golang.org/grpc to v1.82.1 to Update module google.golang.org/grpc to v1.83.0 2026-07-30 12:09:38 +00:00
renovate-bot force-pushed renovate/google.golang.org-grpc-1.x from ac6f1e9bbe
Some checks failed
build / build (pull_request) Failing after 14s
to 8192541409
Some checks failed
build / build (pull_request) Failing after 11s
2026-08-19 12:08:49 +00:00
Compare
renovate-bot changed title from Update module google.golang.org/grpc to v1.83.0 to Update module google.golang.org/grpc to v1.83.1 2026-08-19 12:08:53 +00:00
renovate-bot force-pushed renovate/google.golang.org-grpc-1.x from 8192541409
Some checks failed
build / build (pull_request) Failing after 11s
to 5e894749a3
Some checks failed
build / build (pull_request) Failing after 12s
2026-08-26 12:08:41 +00:00
Compare
renovate-bot changed title from Update module google.golang.org/grpc to v1.83.1 to Update module google.golang.org/grpc to v1.83.2 2026-08-26 12:08:47 +00:00
renovate-bot force-pushed renovate/google.golang.org-grpc-1.x from 5e894749a3
Some checks failed
build / build (pull_request) Failing after 12s
to 30182117ab
Some checks failed
build / build (pull_request) Failing after 15s
2026-09-18 12:08:52 +00:00
Compare
renovate-bot changed title from Update module google.golang.org/grpc to v1.83.2 to Update module google.golang.org/grpc to v1.84.0 2026-09-18 12:08:56 +00:00
Some checks failed
build / build (pull_request) Failing after 15s
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin renovate/google.golang.org-grpc-1.x:renovate/google.golang.org-grpc-1.x
git switch renovate/google.golang.org-grpc-1.x

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch main
git merge --no-ff renovate/google.golang.org-grpc-1.x
git switch renovate/google.golang.org-grpc-1.x
git rebase main
git switch main
git merge --ff-only renovate/google.golang.org-grpc-1.x
git switch renovate/google.golang.org-grpc-1.x
git rebase main
git switch main
git merge --no-ff renovate/google.golang.org-grpc-1.x
git switch main
git merge --squash renovate/google.golang.org-grpc-1.x
git switch main
git merge --ff-only renovate/google.golang.org-grpc-1.x
git switch main
git merge renovate/google.golang.org-grpc-1.x
git push origin main
Sign in to join this conversation.
No description provided.