Behavior Changes
- balancer: client channel no longer connects to idle subchannels that are returned by the pickers; LB policy should call SubConn.Connect instead. (#4579)
- This change is in line with existing documentation stating the balancer must call Connect on idle SubConns in order for them to connect, and is preparation for an upcoming change that transitions SubConns to the idle state when connections are lost. See https://pkg.go.dev/google.golang.org/grpc/balancer#SubConn for more details.
Bug Fixes
- transport: fail RPCs without HTTP status 200 (OK), according to the gRPC spec (#4474)
- Special Thanks: @JNProtzman
- binarylog: fail the
Write()
method if proto marshaling fails (#4582)- Special Thanks: @Jille
- binarylog: exit the flusher goroutine upon closing the
bufferedSink
(#4583)- Special Thanks: @Jille
New Features
- metadata: add Delete method to MD to encapsulate lowercasing (#4549)
- Special Thanks: @konradreiche
- xds/cds: support logical DNS cluster and aggregated cluster (#4594)
- stats: add stats.Begin.IsClientStream and IsServerStream to indicate the type of RPC invoked (#4533)
- Special Thanks: @leviska
Performance Improvements
- server: improve performance when multiple interceptors are used (#4524)
- Special Thanks: @amenzhinsky