- Use power-of-two random choices for channel selection to avoid thundering herd
- Use daemon threads for grpc-gcp background executors by default
- Support of Unbind manual affinity keys after terminal calls
- Fix race for metrics values (#228)
- Set channelID in call options for downstream interceptors (#225)
- End to end fallback (#221)
- Migrate opencensus metrics to opentelemetry (#222)
- Dynamic channel pool scaling (#194)
- Log manual affinity and disabling affinity (#177)
- Affinity keys cleanup. Allow setting keys lifetime (#174)
- Manual affinity via call options or context (#175)
- Add disable affinity feature (#167)
- Support common labels for multi-endpoint metrics (#160)
- MultiEndpoint metrics (#158)
- Fix race condition when running and adding state change callbacks. (#155)
- MultiEndpoint: allow specifying protocol in the endpoint. (#151)
- Add switching delay to GcpMultiEndpointChannel. (#145)
- Look for a multi-endpoint specified in gRPC context. (#149)
- multi-endpoint (#135).
- round-robin for bind calls (#127).
- minSize of the channel pool (#134).
- detailed logs (#133).
- log metrics (#131).
- map a key to current channel when bound call arrives but no mapping for the key exists (#132).
- consolidate channel pool config in the GcpChannelPoolOptions (#109).
- improve bind/unbind logic.
- improve getChannelRef performance for calls without channel affinity.
- more accurate affinity counts.
- allow to rebind a key to another channel and adjust affinity counts accordingly.
- gRPC channel pool with configurable channel affinity.
- provide a channel with minimum active streams for a new call.
- an optional fallback from non-ready channel to a ready channel.
- an option to detect unresponsive channels.