grpc-js: Return LB policy configs from resolvers in JSON form #2538
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
More generally, the principle here is that LB policy configs should be created and passed around as plain objects until they need to be passed to an LB policy, at which time they are parsed into a typed object.
In addition, an LB policy config for a non-leaf/petiole policy has a list of possible configs for each child policy, and the first usable config in the list is used. Prior to this change, that selection took place at child policy creation time. Now, it takes place at LB policy config parse time, recursively.
The purpose of this PR is to make it easier to implement custom LB policies. Specifically, that spec requires generating arbitrary LB policy configs from
Struct
messages.API changes:
ServiceConfig
and interfaces for its membersMethodConfig
,LoadBalancingConfig
, andRetryPolicy
have been moved out of theexperimental
namespace, into the stable public API.LoadBalancingConfig
type now refers to simple raw objects instead of class instances.experimental.getFirstUsableConfig
,experimental.validateLoadBalancingConfig
, andexperimental.OutlierDetectionLoadBalancingConfig
have been removed.experimental.selectLbConfigFromList
,experimental.parseLoadBalancingConfig
, andexperimental.OutlierDetectionRawConfig
have been added.