grpc 1.45.0 → 1.46.2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +36 -29
- data/include/grpc/impl/codegen/grpc_types.h +7 -13
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +309 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +122 -0
- data/src/core/ext/filters/{client_idle → channel_idle}/idle_filter_state.cc +1 -1
- data/src/core/ext/filters/{client_idle → channel_idle}/idle_filter_state.h +3 -3
- data/src/core/ext/filters/client_channel/client_channel.cc +163 -96
- data/src/core/ext/filters/client_channel/client_channel.h +2 -0
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +124 -581
- data/src/core/ext/filters/client_channel/health/health_check_client.h +24 -160
- data/src/core/ext/filters/client_channel/http_proxy.cc +88 -110
- data/src/core/ext/filters/client_channel/http_proxy.h +17 -0
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +182 -142
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +2 -6
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +1 -10
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +87 -58
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +51 -48
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +14 -7
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +229 -284
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +92 -257
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +51 -221
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +201 -0
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +106 -0
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +102 -55
- data/src/core/ext/filters/client_channel/retry_filter.cc +18 -3
- data/src/core/ext/filters/client_channel/subchannel.cc +5 -5
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +544 -0
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +214 -0
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +127 -367
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +24 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +78 -458
- data/src/core/ext/filters/http/client/http_client_filter.h +21 -4
- data/src/core/ext/filters/http/client_authority_filter.cc +17 -22
- data/src/core/ext/filters/http/client_authority_filter.h +6 -5
- data/src/core/ext/filters/http/http_filters_plugin.cc +9 -6
- data/src/core/ext/filters/http/server/http_server_filter.cc +2 -116
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +2 -8
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +2 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +73 -201
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -1
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +5 -4
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +139 -28
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +2 -6
- data/src/core/ext/transport/chttp2/transport/internal.h +4 -2
- data/src/core/ext/transport/chttp2/transport/parsing.cc +8 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +24 -13
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +27 -24
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +143 -63
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +37 -35
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +177 -77
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +115 -111
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +547 -207
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +26 -13
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +23 -9
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +18 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +13 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +9 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +49 -46
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +217 -78
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +10 -2
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +12 -12
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +40 -8
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +20 -2
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +55 -55
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +289 -110
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +133 -125
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +656 -267
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +24 -18
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +96 -23
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +185 -173
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +860 -309
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +10 -2
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +44 -24
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +165 -40
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +72 -63
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +433 -174
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +33 -31
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +154 -52
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +5 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +14 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +89 -89
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +460 -166
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +76 -33
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +379 -69
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +14 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +5 -25
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +10 -91
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +26 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +70 -68
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +369 -131
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +94 -65
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +447 -161
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +27 -11
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +104 -85
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +378 -113
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +3 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +6 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +30 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +43 -16
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +58 -24
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +14 -4
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +18 -18
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +100 -43
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +31 -30
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +171 -71
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +32 -32
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +196 -95
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +7 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +53 -46
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +284 -129
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +56 -50
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +337 -146
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +13 -11
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +49 -14
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +14 -4
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +20 -4
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +33 -32
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +205 -86
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +34 -34
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +175 -74
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +56 -52
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +370 -146
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +27 -23
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +173 -74
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +362 -341
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +2056 -845
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +11 -11
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +49 -16
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +56 -50
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +293 -111
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +6 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +10 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +26 -10
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +27 -12
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +17 -16
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +83 -36
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +7 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +46 -17
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +38 -12
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +10 -6
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +15 -15
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +71 -28
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +25 -25
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +149 -65
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +8 -7
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +30 -12
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +42 -15
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +173 -144
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +898 -323
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +51 -45
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +261 -116
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +13 -13
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +70 -25
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +80 -55
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +410 -124
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +23 -9
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +44 -44
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +261 -122
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +47 -21
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +32 -32
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +175 -66
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +17 -6
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +38 -17
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +12 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +43 -18
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +20 -9
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +24 -9
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +14 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +40 -16
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +70 -25
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +37 -18
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +12 -12
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +81 -30
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +16 -16
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +76 -30
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +20 -20
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +90 -30
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +28 -10
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +3 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +13 -4
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +18 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +9 -0
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +17 -4
- data/src/core/ext/upb-generated/google/api/annotations.upb.c +3 -3
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +17 -2
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +70 -66
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +410 -162
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +80 -74
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +440 -158
- data/src/core/ext/upb-generated/google/api/http.upb.c +17 -17
- data/src/core/ext/upb-generated/google/api/http.upb.h +116 -43
- data/src/core/ext/upb-generated/google/api/httpbody.upb.c +4 -4
- data/src/core/ext/upb-generated/google/api/httpbody.upb.h +19 -7
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +3 -3
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +6 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +163 -162
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +1157 -435
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +3 -3
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +10 -4
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +15 -15
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +108 -40
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +3 -3
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +10 -4
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +18 -18
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +27 -0
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +4 -4
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +19 -7
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +15 -15
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +65 -22
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +12 -12
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +49 -12
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +69 -65
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +364 -149
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +8 -7
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +20 -4
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +4 -4
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +6 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +31 -31
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +150 -58
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +11 -11
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +51 -18
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +175 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +764 -0
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +22 -22
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +97 -10
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +6 -6
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +23 -2
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +10 -2
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +6 -6
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +27 -6
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +5 -5
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +20 -2
- data/src/core/ext/upb-generated/validate/validate.upb.c +261 -250
- data/src/core/ext/upb-generated/validate/validate.upb.h +1836 -663
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +22 -22
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +97 -10
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +6 -6
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +23 -2
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +10 -2
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +18 -18
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +70 -10
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +20 -2
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +2 -2
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +3 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +8 -8
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +38 -12
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +27 -10
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +10 -2
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +21 -8
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +10 -10
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +71 -30
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +16 -2
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +12 -12
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +69 -26
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +43 -39
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +255 -103
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +4 -4
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +19 -8
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +9 -9
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +70 -25
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +10 -2
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +50 -46
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +195 -185
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +16 -12
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +129 -94
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +18 -33
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +0 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +163 -155
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +141 -138
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +26 -20
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +738 -730
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +271 -251
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +207 -193
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +99 -0
- data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +75 -0
- data/src/core/ext/xds/certificate_provider_store.cc +8 -0
- data/src/core/ext/xds/certificate_provider_store.h +9 -0
- data/src/core/ext/xds/xds_api.cc +20 -0
- data/src/core/ext/xds/xds_certificate_provider.cc +2 -0
- data/src/core/ext/xds/xds_certificate_provider.h +8 -0
- data/src/core/ext/xds/xds_client.cc +83 -93
- data/src/core/ext/xds/xds_client.h +11 -4
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +142 -0
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +79 -0
- data/src/core/ext/xds/xds_common_types.cc +9 -9
- data/src/core/ext/xds/xds_common_types.h +3 -3
- data/src/core/ext/xds/xds_endpoint.cc +12 -5
- data/src/core/ext/xds/xds_http_fault_filter.cc +1 -1
- data/src/core/ext/xds/xds_listener.cc +1 -1
- data/src/core/ext/xds/xds_route_config.cc +162 -25
- data/src/core/ext/xds/xds_route_config.h +13 -10
- data/src/core/ext/xds/xds_server_config_fetcher.cc +17 -22
- data/src/core/lib/avl/avl.h +68 -5
- data/src/core/lib/channel/call_tracer.h +4 -1
- data/src/core/lib/channel/channel_args.cc +138 -59
- data/src/core/lib/channel/channel_args.h +210 -9
- data/src/core/lib/channel/channel_args_preconditioning.cc +3 -9
- data/src/core/lib/channel/channel_args_preconditioning.h +1 -2
- data/src/core/lib/channel/channel_stack.h +2 -5
- data/src/core/lib/channel/channel_stack_builder.cc +0 -65
- data/src/core/lib/channel/channel_stack_builder.h +27 -6
- data/src/core/lib/channel/channel_stack_builder_impl.cc +102 -0
- data/src/core/lib/channel/channel_stack_builder_impl.h +48 -0
- data/src/core/lib/channel/connected_channel.h +1 -0
- data/src/core/lib/channel/promise_based_filter.cc +495 -162
- data/src/core/lib/channel/promise_based_filter.h +55 -41
- data/src/core/lib/compression/compression_internal.cc +1 -7
- data/src/core/lib/debug/stats_data.cc +2 -6
- data/src/core/lib/debug/stats_data.h +18 -21
- data/src/core/lib/gpr/tls.h +1 -0
- data/src/core/lib/gprpp/bitset.h +12 -0
- data/src/core/lib/gprpp/cpp_impl_of.h +4 -0
- data/src/core/lib/gprpp/match.h +73 -0
- data/src/core/lib/gprpp/overload.h +59 -0
- data/src/core/lib/gprpp/ref_counted.h +2 -0
- data/src/core/lib/gprpp/single_set_ptr.h +87 -0
- data/src/core/lib/gprpp/status_helper.cc +18 -2
- data/src/core/lib/gprpp/time.cc +12 -0
- data/src/core/lib/gprpp/time.h +1 -1
- data/src/core/lib/http/format_request.cc +1 -2
- data/src/core/lib/http/httpcli_security_connector.cc +5 -5
- data/src/core/lib/http/parser.cc +80 -9
- data/src/core/lib/http/parser.h +14 -1
- data/src/core/lib/iomgr/ev_posix.cc +6 -7
- data/src/core/lib/iomgr/fork_posix.cc +1 -1
- data/src/core/lib/iomgr/port.h +0 -2
- data/src/core/lib/iomgr/tcp_client_posix.cc +2 -2
- data/src/core/lib/iomgr/tcp_posix.cc +93 -35
- data/src/core/lib/iomgr/tcp_server_posix.cc +26 -17
- data/src/core/lib/json/json_util.h +3 -3
- data/src/core/lib/promise/call_push_pull.h +144 -0
- data/src/core/lib/promise/detail/status.h +2 -1
- data/src/core/lib/promise/intra_activity_waiter.h +49 -0
- data/src/core/lib/promise/latch.h +104 -0
- data/src/core/lib/resource_quota/api.cc +5 -30
- data/src/core/lib/resource_quota/api.h +1 -1
- data/src/core/lib/resource_quota/resource_quota.h +8 -0
- data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +9 -12
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +5 -6
- data/src/core/lib/security/context/security_context.h +8 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +6 -5
- data/src/core/lib/security/credentials/alts/alts_credentials.h +4 -0
- data/src/core/lib/security/credentials/call_creds_util.cc +3 -3
- data/src/core/lib/security/credentials/call_creds_util.h +2 -2
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +15 -10
- data/src/core/lib/security/credentials/composite/composite_credentials.h +9 -8
- data/src/core/lib/security/credentials/credentials.h +16 -33
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +8 -12
- data/src/core/lib/security/credentials/fake/fake_credentials.h +8 -5
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +4 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +3 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +5 -4
- data/src/core/lib/security/credentials/iam/iam_credentials.h +6 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +22 -29
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +57 -0
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +6 -2
- data/src/core/lib/security/credentials/local/local_credentials.cc +6 -6
- data/src/core/lib/security/credentials/local/local_credentials.h +4 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +17 -9
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +14 -6
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +8 -6
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +8 -6
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +6 -4
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +8 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +49 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +8 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +42 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +66 -95
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +9 -6
- data/src/core/lib/security/credentials/tls/tls_credentials.h +5 -5
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +48 -50
- data/src/core/lib/security/credentials/xds/xds_credentials.h +31 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/security_connector.h +9 -0
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +4 -2
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +4 -2
- data/src/core/lib/security/transport/auth_filters.h +7 -7
- data/src/core/lib/security/transport/client_auth_filter.cc +28 -20
- data/src/core/lib/security/transport/secure_endpoint.cc +198 -129
- data/src/core/lib/security/transport/secure_endpoint.h +1 -1
- data/src/core/lib/security/transport/security_handshaker.cc +6 -4
- data/src/core/lib/surface/call.cc +1023 -903
- data/src/core/lib/surface/call.h +0 -14
- data/src/core/lib/surface/channel.cc +4 -3
- data/src/core/lib/surface/channel_init.cc +2 -3
- data/src/core/lib/surface/channel_init.h +2 -6
- data/src/core/lib/surface/init.cc +1 -1
- data/src/core/lib/surface/server.cc +3 -14
- data/src/core/lib/surface/server.h +1 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/byte_stream.cc +2 -0
- data/src/core/lib/transport/metadata_batch.h +12 -8
- data/src/core/lib/transport/transport.h +20 -5
- data/src/core/lib/transport/transport_impl.h +4 -3
- data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +2 -2
- data/src/core/tsi/ssl_transport_security.cc +75 -38
- data/src/core/tsi/ssl_transport_security.h +8 -2
- data/src/core/tsi/transport_security_interface.h +2 -0
- data/src/ruby/ext/grpc/extconf.rb +1 -1
- data/src/ruby/lib/grpc/generic/active_call.rb +7 -1
- data/src/ruby/lib/grpc/grpc.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +1 -0
- data/src/ruby/pb/test/client.rb +769 -0
- data/src/ruby/pb/test/server.rb +252 -0
- data/src/ruby/pb/test/xds_client.rb +415 -0
- data/third_party/upb/third_party/utf8_range/utf8_range.h +1 -1
- data/third_party/upb/upb/decode.c +32 -16
- data/third_party/upb/upb/def.c +118 -55
- data/third_party/upb/upb/def.h +12 -3
- data/third_party/upb/upb/encode.c +14 -8
- data/third_party/upb/upb/json_encode.c +776 -0
- data/third_party/upb/upb/json_encode.h +62 -0
- data/third_party/upb/upb/msg.c +5 -7
- data/third_party/upb/upb/msg.h +1 -2
- data/third_party/upb/upb/msg_internal.h +49 -36
- data/third_party/upb/upb/port_def.inc +8 -0
- data/third_party/upb/upb/port_undef.inc +1 -0
- data/third_party/upb/upb/table.c +10 -6
- data/third_party/upb/upb/table_internal.h +2 -0
- data/third_party/upb/upb/upb.h +41 -11
- data/third_party/zlib/crc32.c +966 -292
- data/third_party/zlib/crc32.h +9441 -436
- data/third_party/zlib/deflate.c +78 -30
- data/third_party/zlib/deflate.h +12 -15
- data/third_party/zlib/gzguts.h +3 -2
- data/third_party/zlib/gzlib.c +5 -3
- data/third_party/zlib/gzread.c +5 -7
- data/third_party/zlib/gzwrite.c +25 -13
- data/third_party/zlib/infback.c +2 -1
- data/third_party/zlib/inffast.c +14 -14
- data/third_party/zlib/inflate.c +39 -8
- data/third_party/zlib/inflate.h +3 -2
- data/third_party/zlib/inftrees.c +3 -3
- data/third_party/zlib/trees.c +27 -48
- data/third_party/zlib/zlib.h +123 -100
- data/third_party/zlib/zutil.c +2 -2
- data/third_party/zlib/zutil.h +12 -9
- metadata +66 -45
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -201
- data/src/core/ext/filters/max_age/max_age_filter.cc +0 -566
- data/src/core/ext/filters/max_age/max_age_filter.h +0 -26
- data/src/core/lib/iomgr/ev_epollex_linux.cc +0 -1657
- data/src/core/lib/iomgr/ev_epollex_linux.h +0 -30
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +0 -119
- data/src/core/lib/iomgr/is_epollexclusive_available.h +0 -36
- data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
@@ -131,24 +131,14 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
131
131
|
RefCountedPtr<XdsClusterResolverLb> xds_cluster_resolver_lb,
|
132
132
|
size_t index)
|
133
133
|
: parent_(std::move(xds_cluster_resolver_lb)), index_(index) {}
|
134
|
-
virtual void Start() = 0;
|
135
|
-
void Orphan() override = 0;
|
136
|
-
virtual Json::Array override_child_policy() = 0;
|
137
|
-
virtual bool disable_reresolution() = 0;
|
138
|
-
|
139
|
-
// Returns a pair containing the cluster and eds_service_name
|
140
|
-
// to use for LRS load reporting. Caller must ensure that config_ is set
|
141
|
-
// before calling.
|
142
|
-
std::pair<absl::string_view, absl::string_view> GetLrsClusterKey() const {
|
143
|
-
return {
|
144
|
-
parent_->config_->discovery_mechanisms()[index_].cluster_name,
|
145
|
-
parent_->config_->discovery_mechanisms()[index_].eds_service_name};
|
146
|
-
}
|
147
134
|
|
148
|
-
protected:
|
149
135
|
XdsClusterResolverLb* parent() const { return parent_.get(); }
|
150
136
|
size_t index() const { return index_; }
|
151
137
|
|
138
|
+
virtual void Start() = 0;
|
139
|
+
virtual Json::Array override_child_policy() = 0;
|
140
|
+
virtual bool disable_reresolution() = 0;
|
141
|
+
|
152
142
|
private:
|
153
143
|
RefCountedPtr<XdsClusterResolverLb> parent_;
|
154
144
|
// Stores its own index in the vector of DiscoveryMechanism.
|
@@ -186,11 +176,11 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
186
176
|
},
|
187
177
|
DEBUG_LOCATION);
|
188
178
|
}
|
189
|
-
void OnError(
|
179
|
+
void OnError(absl::Status status) override {
|
190
180
|
Ref().release(); // ref held by callback
|
191
181
|
discovery_mechanism_->parent()->work_serializer()->Run(
|
192
|
-
[this,
|
193
|
-
OnErrorHelper(
|
182
|
+
[this, status]() {
|
183
|
+
OnErrorHelper(status);
|
194
184
|
Unref();
|
195
185
|
},
|
196
186
|
DEBUG_LOCATION);
|
@@ -213,9 +203,9 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
213
203
|
discovery_mechanism_->parent()->OnEndpointChanged(
|
214
204
|
discovery_mechanism_->index(), std::move(update));
|
215
205
|
}
|
216
|
-
void OnErrorHelper(
|
206
|
+
void OnErrorHelper(absl::Status status) {
|
217
207
|
discovery_mechanism_->parent()->OnError(discovery_mechanism_->index(),
|
218
|
-
|
208
|
+
status);
|
219
209
|
}
|
220
210
|
void OnResourceDoesNotExistHelper() {
|
221
211
|
discovery_mechanism_->parent()->OnResourceDoesNotExist(
|
@@ -229,14 +219,9 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
229
219
|
friend class EndpointWatcher;
|
230
220
|
|
231
221
|
absl::string_view GetEdsResourceName() const {
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
return parent()
|
236
|
-
->config_->discovery_mechanisms()[index()]
|
237
|
-
.eds_service_name;
|
238
|
-
}
|
239
|
-
return parent()->config_->discovery_mechanisms()[index()].cluster_name;
|
222
|
+
auto& config = parent()->config_->discovery_mechanisms()[index()];
|
223
|
+
if (!config.eds_service_name.empty()) return config.eds_service_name;
|
224
|
+
return config.cluster_name;
|
240
225
|
}
|
241
226
|
|
242
227
|
// Note that this is not owned, so this pointer must never be dereferenced.
|
@@ -284,15 +269,16 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
284
269
|
|
285
270
|
struct DiscoveryMechanismEntry {
|
286
271
|
OrphanablePtr<DiscoveryMechanism> discovery_mechanism;
|
287
|
-
|
288
|
-
|
289
|
-
//
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
272
|
+
// Most recent update reported by the discovery mechanism.
|
273
|
+
absl::optional<XdsEndpointResource> latest_update;
|
274
|
+
// State used to retain child policy names for priority policy.
|
275
|
+
std::vector<size_t /*child_number*/> priority_child_numbers;
|
276
|
+
size_t next_available_child_number = 0;
|
277
|
+
|
278
|
+
const XdsClusterResolverLbConfig::DiscoveryMechanism& config() const;
|
279
|
+
|
280
|
+
// Returns the child policy name for a given priority.
|
281
|
+
std::string GetChildPolicyName(size_t priority) const;
|
296
282
|
};
|
297
283
|
|
298
284
|
class Helper : public ChannelControlHelper {
|
@@ -326,12 +312,11 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
326
312
|
void ShutdownLocked() override;
|
327
313
|
|
328
314
|
void OnEndpointChanged(size_t index, XdsEndpointResource update);
|
329
|
-
void OnError(size_t index,
|
315
|
+
void OnError(size_t index, absl::Status status);
|
330
316
|
void OnResourceDoesNotExist(size_t index);
|
331
317
|
|
332
318
|
void MaybeDestroyChildPolicyLocked();
|
333
319
|
|
334
|
-
void UpdatePriorityList(XdsEndpointResource::PriorityList priority_list);
|
335
320
|
void UpdateChildPolicyLocked();
|
336
321
|
OrphanablePtr<LoadBalancingPolicy> CreateChildPolicyLocked(
|
337
322
|
const grpc_channel_args* args);
|
@@ -353,11 +338,6 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
353
338
|
// Vector of discovery mechansism entries in priority order.
|
354
339
|
std::vector<DiscoveryMechanismEntry> discovery_mechanisms_;
|
355
340
|
|
356
|
-
// The latest data from the endpoint watcher.
|
357
|
-
XdsEndpointResource::PriorityList priority_list_;
|
358
|
-
// State used to retain child policy names for priority policy.
|
359
|
-
std::vector<size_t /*child_number*/> priority_child_numbers_;
|
360
|
-
|
361
341
|
OrphanablePtr<LoadBalancingPolicy> child_policy_;
|
362
342
|
};
|
363
343
|
|
@@ -491,9 +471,8 @@ void XdsClusterResolverLb::LogicalDNSDiscoveryMechanism::Orphan() {
|
|
491
471
|
void XdsClusterResolverLb::LogicalDNSDiscoveryMechanism::ResolverResultHandler::
|
492
472
|
ReportResult(Resolver::Result result) {
|
493
473
|
if (!result.addresses.ok()) {
|
494
|
-
discovery_mechanism_->parent()->OnError(
|
495
|
-
|
496
|
-
absl_status_to_grpc_error(result.addresses.status()));
|
474
|
+
discovery_mechanism_->parent()->OnError(discovery_mechanism_->index(),
|
475
|
+
result.addresses.status());
|
497
476
|
return;
|
498
477
|
}
|
499
478
|
// Convert resolver result to EDS update.
|
@@ -511,6 +490,22 @@ void XdsClusterResolverLb::LogicalDNSDiscoveryMechanism::ResolverResultHandler::
|
|
511
490
|
discovery_mechanism_->index(), std::move(update));
|
512
491
|
}
|
513
492
|
|
493
|
+
//
|
494
|
+
// XdsClusterResolverLb::DiscoveryMechanismEntry
|
495
|
+
//
|
496
|
+
|
497
|
+
const XdsClusterResolverLbConfig::DiscoveryMechanism&
|
498
|
+
XdsClusterResolverLb::DiscoveryMechanismEntry::config() const {
|
499
|
+
return discovery_mechanism->parent()
|
500
|
+
->config_->discovery_mechanisms()[discovery_mechanism->index()];
|
501
|
+
}
|
502
|
+
|
503
|
+
std::string XdsClusterResolverLb::DiscoveryMechanismEntry::GetChildPolicyName(
|
504
|
+
size_t priority) const {
|
505
|
+
return absl::StrCat("{cluster=", config().cluster_name,
|
506
|
+
", child_number=", priority_child_numbers[priority], "}");
|
507
|
+
}
|
508
|
+
|
514
509
|
//
|
515
510
|
// XdsClusterResolverLb public methods
|
516
511
|
//
|
@@ -614,100 +609,37 @@ void XdsClusterResolverLb::OnEndpointChanged(size_t index,
|
|
614
609
|
" for discovery mechanism %" PRIuPTR "",
|
615
610
|
this, index);
|
616
611
|
}
|
612
|
+
DiscoveryMechanismEntry& discovery_entry = discovery_mechanisms_[index];
|
617
613
|
// We need at least one priority for each discovery mechanism, just so that we
|
618
614
|
// have a child in which to create the xds_cluster_impl policy. This ensures
|
619
615
|
// that we properly handle the case of a discovery mechanism dropping 100% of
|
620
616
|
// calls, the OnError() case, and the OnResourceDoesNotExist() case.
|
621
617
|
if (update.priorities.empty()) update.priorities.emplace_back();
|
622
|
-
|
623
|
-
|
624
|
-
|
625
|
-
|
626
|
-
// If any discovery mechanism has not received its first update,
|
627
|
-
// wait until that happens before creating the child policy.
|
628
|
-
// TODO(roth): If this becomes problematic in the future (e.g., a
|
629
|
-
// secondary discovery mechanism delaying us from starting up at all),
|
630
|
-
// we can consider some sort of optimization whereby we can create the
|
631
|
-
// priority policy with only a subset of its children. But we need to
|
632
|
-
// make sure not to get into a situation where the priority policy
|
633
|
-
// will put the channel into TRANSIENT_FAILURE instead of CONNECTING
|
634
|
-
// while we're still waiting for the other discovery mechanism(s).
|
635
|
-
for (DiscoveryMechanismEntry& mechanism : discovery_mechanisms_) {
|
636
|
-
if (!mechanism.first_update_received) return;
|
637
|
-
}
|
638
|
-
// Construct new priority list.
|
639
|
-
XdsEndpointResource::PriorityList priority_list;
|
640
|
-
size_t priority_index = 0;
|
641
|
-
for (DiscoveryMechanismEntry& mechanism : discovery_mechanisms_) {
|
642
|
-
// If the mechanism has a pending update, use that.
|
643
|
-
// Otherwise, use the priorities that it previously contributed to the
|
644
|
-
// combined list.
|
645
|
-
if (mechanism.pending_priority_list.has_value()) {
|
646
|
-
priority_list.insert(priority_list.end(),
|
647
|
-
mechanism.pending_priority_list->begin(),
|
648
|
-
mechanism.pending_priority_list->end());
|
649
|
-
priority_index += mechanism.num_priorities;
|
650
|
-
mechanism.num_priorities = mechanism.pending_priority_list->size();
|
651
|
-
mechanism.pending_priority_list.reset();
|
652
|
-
} else {
|
653
|
-
priority_list.insert(
|
654
|
-
priority_list.end(), priority_list_.begin() + priority_index,
|
655
|
-
priority_list_.begin() + priority_index + mechanism.num_priorities);
|
656
|
-
priority_index += mechanism.num_priorities;
|
657
|
-
}
|
658
|
-
}
|
659
|
-
// Update child policy.
|
660
|
-
UpdatePriorityList(std::move(priority_list));
|
661
|
-
}
|
662
|
-
|
663
|
-
void XdsClusterResolverLb::OnError(size_t index, grpc_error_handle error) {
|
664
|
-
gpr_log(GPR_ERROR,
|
665
|
-
"[xds_cluster_resolver_lb %p] discovery mechanism %" PRIuPTR
|
666
|
-
" xds watcher reported error: %s",
|
667
|
-
this, index, grpc_error_std_string(error).c_str());
|
668
|
-
GRPC_ERROR_UNREF(error);
|
669
|
-
if (shutting_down_) return;
|
670
|
-
if (!discovery_mechanisms_[index].first_update_received) {
|
671
|
-
// Call OnEndpointChanged with an empty update just like
|
672
|
-
// OnResourceDoesNotExist.
|
673
|
-
OnEndpointChanged(index, XdsEndpointResource());
|
674
|
-
}
|
675
|
-
}
|
676
|
-
|
677
|
-
void XdsClusterResolverLb::OnResourceDoesNotExist(size_t index) {
|
678
|
-
gpr_log(GPR_ERROR,
|
679
|
-
"[xds_cluster_resolver_lb %p] discovery mechanism %" PRIuPTR
|
680
|
-
" resource does not exist",
|
681
|
-
this, index);
|
682
|
-
if (shutting_down_) return;
|
683
|
-
// Call OnEndpointChanged with an empty update.
|
684
|
-
OnEndpointChanged(index, XdsEndpointResource());
|
685
|
-
}
|
686
|
-
|
687
|
-
//
|
688
|
-
// child policy-related methods
|
689
|
-
//
|
690
|
-
|
691
|
-
void XdsClusterResolverLb::UpdatePriorityList(
|
692
|
-
XdsEndpointResource::PriorityList priority_list) {
|
693
|
-
// Build some maps from locality to child number and the reverse from
|
694
|
-
// the old data in priority_list_ and priority_child_numbers_.
|
618
|
+
// Update priority_child_numbers, reusing old child numbers in an
|
619
|
+
// intelligent way to avoid unnecessary churn.
|
620
|
+
// First, build some maps from locality to child number and the reverse
|
621
|
+
// from the old data in the entry's update and priority_child_numbers.
|
695
622
|
std::map<XdsLocalityName*, size_t /*child_number*/, XdsLocalityName::Less>
|
696
623
|
locality_child_map;
|
697
|
-
std::map<size_t, std::set<XdsLocalityName
|
698
|
-
|
699
|
-
|
700
|
-
const auto&
|
701
|
-
for (
|
702
|
-
|
703
|
-
|
704
|
-
|
624
|
+
std::map<size_t, std::set<XdsLocalityName*, XdsLocalityName::Less>>
|
625
|
+
child_locality_map;
|
626
|
+
if (discovery_entry.latest_update.has_value()) {
|
627
|
+
const auto& prev_priority_list = discovery_entry.latest_update->priorities;
|
628
|
+
for (size_t priority = 0; priority < prev_priority_list.size();
|
629
|
+
++priority) {
|
630
|
+
size_t child_number = discovery_entry.priority_child_numbers[priority];
|
631
|
+
const auto& localities = prev_priority_list[priority].localities;
|
632
|
+
for (const auto& p : localities) {
|
633
|
+
XdsLocalityName* locality_name = p.first;
|
634
|
+
locality_child_map[locality_name] = child_number;
|
635
|
+
child_locality_map[child_number].insert(locality_name);
|
636
|
+
}
|
705
637
|
}
|
706
638
|
}
|
707
639
|
// Construct new list of children.
|
708
640
|
std::vector<size_t> priority_child_numbers;
|
709
|
-
for (size_t priority = 0; priority <
|
710
|
-
const auto& localities =
|
641
|
+
for (size_t priority = 0; priority < update.priorities.size(); ++priority) {
|
642
|
+
const auto& localities = update.priorities[priority].localities;
|
711
643
|
absl::optional<size_t> child_number;
|
712
644
|
// If one of the localities in this priority already existed, reuse its
|
713
645
|
// child number.
|
@@ -735,10 +667,11 @@ void XdsClusterResolverLb::UpdatePriorityList(
|
|
735
667
|
}
|
736
668
|
// If we didn't find an existing child number, assign a new one.
|
737
669
|
if (!child_number.has_value()) {
|
738
|
-
for (child_number =
|
670
|
+
for (child_number = discovery_entry.next_available_child_number;
|
739
671
|
child_locality_map.find(*child_number) != child_locality_map.end();
|
740
672
|
++(*child_number)) {
|
741
673
|
}
|
674
|
+
discovery_entry.next_available_child_number = *child_number + 1;
|
742
675
|
// Add entry so we know that the child number is in use.
|
743
676
|
// (Don't need to add the list of localities, since we won't use them.)
|
744
677
|
child_locality_map[*child_number];
|
@@ -746,42 +679,87 @@ void XdsClusterResolverLb::UpdatePriorityList(
|
|
746
679
|
priority_child_numbers.push_back(*child_number);
|
747
680
|
}
|
748
681
|
// Save update.
|
749
|
-
|
750
|
-
|
682
|
+
discovery_entry.latest_update = std::move(update);
|
683
|
+
discovery_entry.priority_child_numbers = std::move(priority_child_numbers);
|
684
|
+
// If any discovery mechanism has not received its first update,
|
685
|
+
// wait until that happens before creating the child policy.
|
686
|
+
// TODO(roth): If this becomes problematic in the future (e.g., a
|
687
|
+
// secondary discovery mechanism delaying us from starting up at all),
|
688
|
+
// we can consider some sort of optimization whereby we can create the
|
689
|
+
// priority policy with only a subset of its children. But we need to
|
690
|
+
// make sure not to get into a situation where the priority policy
|
691
|
+
// will put the channel into TRANSIENT_FAILURE instead of CONNECTING
|
692
|
+
// while we're still waiting for the other discovery mechanism(s).
|
693
|
+
for (DiscoveryMechanismEntry& mechanism : discovery_mechanisms_) {
|
694
|
+
if (!mechanism.latest_update.has_value()) return;
|
695
|
+
}
|
751
696
|
// Update child policy.
|
752
697
|
UpdateChildPolicyLocked();
|
753
698
|
}
|
754
699
|
|
700
|
+
void XdsClusterResolverLb::OnError(size_t index, absl::Status status) {
|
701
|
+
gpr_log(GPR_ERROR,
|
702
|
+
"[xds_cluster_resolver_lb %p] discovery mechanism %" PRIuPTR
|
703
|
+
" xds watcher reported error: %s",
|
704
|
+
this, index, status.ToString().c_str());
|
705
|
+
if (shutting_down_) return;
|
706
|
+
if (!discovery_mechanisms_[index].latest_update.has_value()) {
|
707
|
+
// Call OnEndpointChanged with an empty update just like
|
708
|
+
// OnResourceDoesNotExist.
|
709
|
+
OnEndpointChanged(index, XdsEndpointResource());
|
710
|
+
}
|
711
|
+
}
|
712
|
+
|
713
|
+
void XdsClusterResolverLb::OnResourceDoesNotExist(size_t index) {
|
714
|
+
gpr_log(GPR_ERROR,
|
715
|
+
"[xds_cluster_resolver_lb %p] discovery mechanism %" PRIuPTR
|
716
|
+
" resource does not exist",
|
717
|
+
this, index);
|
718
|
+
if (shutting_down_) return;
|
719
|
+
// Call OnEndpointChanged with an empty update.
|
720
|
+
OnEndpointChanged(index, XdsEndpointResource());
|
721
|
+
}
|
722
|
+
|
723
|
+
//
|
724
|
+
// child policy-related methods
|
725
|
+
//
|
726
|
+
|
755
727
|
ServerAddressList XdsClusterResolverLb::CreateChildPolicyAddressesLocked() {
|
756
728
|
ServerAddressList addresses;
|
757
|
-
for (
|
758
|
-
|
759
|
-
|
760
|
-
|
761
|
-
|
762
|
-
|
763
|
-
|
764
|
-
|
765
|
-
|
766
|
-
|
767
|
-
const
|
768
|
-
|
769
|
-
|
770
|
-
|
771
|
-
|
772
|
-
|
729
|
+
for (const auto& discovery_entry : discovery_mechanisms_) {
|
730
|
+
for (size_t priority = 0;
|
731
|
+
priority < discovery_entry.latest_update->priorities.size();
|
732
|
+
++priority) {
|
733
|
+
const auto& priority_entry =
|
734
|
+
discovery_entry.latest_update->priorities[priority];
|
735
|
+
std::string priority_child_name =
|
736
|
+
discovery_entry.GetChildPolicyName(priority);
|
737
|
+
for (const auto& p : priority_entry.localities) {
|
738
|
+
const auto& locality_name = p.first;
|
739
|
+
const auto& locality = p.second;
|
740
|
+
std::vector<std::string> hierarchical_path = {
|
741
|
+
priority_child_name, locality_name->AsHumanReadableString()};
|
742
|
+
for (const auto& endpoint : locality.endpoints) {
|
743
|
+
const ServerAddressWeightAttribute* weight_attribute = static_cast<
|
744
|
+
const ServerAddressWeightAttribute*>(endpoint.GetAttribute(
|
745
|
+
ServerAddressWeightAttribute::kServerAddressWeightAttributeKey));
|
746
|
+
uint32_t weight = locality.lb_weight;
|
747
|
+
if (weight_attribute != nullptr) {
|
748
|
+
weight = locality.lb_weight * weight_attribute->weight();
|
749
|
+
}
|
750
|
+
addresses.emplace_back(
|
751
|
+
endpoint
|
752
|
+
.WithAttribute(
|
753
|
+
kHierarchicalPathAttributeKey,
|
754
|
+
MakeHierarchicalPathAttribute(hierarchical_path))
|
755
|
+
.WithAttribute(kXdsLocalityNameAttributeKey,
|
756
|
+
absl::make_unique<XdsLocalityAttribute>(
|
757
|
+
locality_name->Ref()))
|
758
|
+
.WithAttribute(
|
759
|
+
ServerAddressWeightAttribute::
|
760
|
+
kServerAddressWeightAttributeKey,
|
761
|
+
absl::make_unique<ServerAddressWeightAttribute>(weight)));
|
773
762
|
}
|
774
|
-
addresses.emplace_back(
|
775
|
-
endpoint
|
776
|
-
.WithAttribute(kHierarchicalPathAttributeKey,
|
777
|
-
MakeHierarchicalPathAttribute(hierarchical_path))
|
778
|
-
.WithAttribute(kXdsLocalityNameAttributeKey,
|
779
|
-
absl::make_unique<XdsLocalityAttribute>(
|
780
|
-
locality_name->Ref()))
|
781
|
-
.WithAttribute(
|
782
|
-
ServerAddressWeightAttribute::
|
783
|
-
kServerAddressWeightAttributeKey,
|
784
|
-
absl::make_unique<ServerAddressWeightAttribute>(weight)));
|
785
763
|
}
|
786
764
|
}
|
787
765
|
}
|
@@ -792,139 +770,106 @@ RefCountedPtr<LoadBalancingPolicy::Config>
|
|
792
770
|
XdsClusterResolverLb::CreateChildPolicyConfigLocked() {
|
793
771
|
Json::Object priority_children;
|
794
772
|
Json::Array priority_priorities;
|
795
|
-
|
796
|
-
|
797
|
-
|
798
|
-
|
799
|
-
|
800
|
-
|
801
|
-
|
802
|
-
|
803
|
-
|
804
|
-
|
805
|
-
|
806
|
-
|
807
|
-
|
808
|
-
|
809
|
-
|
810
|
-
|
811
|
-
|
812
|
-
|
813
|
-
|
814
|
-
|
815
|
-
|
816
|
-
|
817
|
-
|
818
|
-
|
819
|
-
|
820
|
-
|
821
|
-
|
822
|
-
|
823
|
-
|
824
|
-
|
825
|
-
|
826
|
-
locality_name_json["sub_zone"] = locality_name->sub_zone();
|
773
|
+
for (const auto& discovery_entry : discovery_mechanisms_) {
|
774
|
+
const auto& discovery_config = discovery_entry.config();
|
775
|
+
for (size_t priority = 0;
|
776
|
+
priority < discovery_entry.latest_update->priorities.size();
|
777
|
+
++priority) {
|
778
|
+
const auto& priority_entry =
|
779
|
+
discovery_entry.latest_update->priorities[priority];
|
780
|
+
Json child_policy;
|
781
|
+
if (!discovery_entry.discovery_mechanism->override_child_policy()
|
782
|
+
.empty()) {
|
783
|
+
child_policy =
|
784
|
+
discovery_entry.discovery_mechanism->override_child_policy();
|
785
|
+
} else {
|
786
|
+
const auto& xds_lb_policy = config_->xds_lb_policy().object_value();
|
787
|
+
if (xds_lb_policy.find("ROUND_ROBIN") != xds_lb_policy.end()) {
|
788
|
+
const auto& localities = priority_entry.localities;
|
789
|
+
Json::Object weighted_targets;
|
790
|
+
for (const auto& p : localities) {
|
791
|
+
XdsLocalityName* locality_name = p.first;
|
792
|
+
const auto& locality = p.second;
|
793
|
+
// Add weighted target entry.
|
794
|
+
weighted_targets[locality_name->AsHumanReadableString()] =
|
795
|
+
Json::Object{
|
796
|
+
{"weight", locality.lb_weight},
|
797
|
+
{"childPolicy",
|
798
|
+
Json::Array{
|
799
|
+
Json::Object{
|
800
|
+
{"round_robin", Json::Object()},
|
801
|
+
},
|
802
|
+
}},
|
803
|
+
};
|
827
804
|
}
|
828
|
-
//
|
829
|
-
|
805
|
+
// Construct locality-picking policy.
|
806
|
+
// Start with field from our config and add the "targets" field.
|
807
|
+
child_policy = Json::Array{
|
830
808
|
Json::Object{
|
831
|
-
{"
|
832
|
-
|
833
|
-
|
834
|
-
Json::Object{
|
835
|
-
{"round_robin", Json::Object()},
|
836
|
-
},
|
809
|
+
{"weighted_target_experimental",
|
810
|
+
Json::Object{
|
811
|
+
{"targets", Json::Object()},
|
837
812
|
}},
|
838
|
-
}
|
813
|
+
},
|
814
|
+
};
|
815
|
+
Json::Object& config =
|
816
|
+
*(*child_policy.mutable_array())[0].mutable_object();
|
817
|
+
auto it = config.begin();
|
818
|
+
GPR_ASSERT(it != config.end());
|
819
|
+
(*it->second.mutable_object())["targets"] =
|
820
|
+
std::move(weighted_targets);
|
821
|
+
} else {
|
822
|
+
auto it = xds_lb_policy.find("RING_HASH");
|
823
|
+
GPR_ASSERT(it != xds_lb_policy.end());
|
824
|
+
Json::Object ring_hash_experimental_policy =
|
825
|
+
it->second.object_value();
|
826
|
+
child_policy = Json::Array{
|
827
|
+
Json::Object{
|
828
|
+
{"ring_hash_experimental", ring_hash_experimental_policy},
|
829
|
+
},
|
830
|
+
};
|
839
831
|
}
|
840
|
-
// Construct locality-picking policy.
|
841
|
-
// Start with field from our config and add the "targets" field.
|
842
|
-
child_policy = Json::Array{
|
843
|
-
Json::Object{
|
844
|
-
{"weighted_target_experimental",
|
845
|
-
Json::Object{
|
846
|
-
{"targets", Json::Object()},
|
847
|
-
}},
|
848
|
-
},
|
849
|
-
};
|
850
|
-
Json::Object& config =
|
851
|
-
*(*child_policy.mutable_array())[0].mutable_object();
|
852
|
-
auto it = config.begin();
|
853
|
-
GPR_ASSERT(it != config.end());
|
854
|
-
(*it->second.mutable_object())["targets"] = std::move(weighted_targets);
|
855
|
-
} else {
|
856
|
-
auto it = xds_lb_policy.find("RING_HASH");
|
857
|
-
GPR_ASSERT(it != xds_lb_policy.end());
|
858
|
-
Json::Object ring_hash_experimental_policy = it->second.object_value();
|
859
|
-
child_policy = Json::Array{
|
860
|
-
Json::Object{
|
861
|
-
{"ring_hash_experimental", ring_hash_experimental_policy},
|
862
|
-
},
|
863
|
-
};
|
864
832
|
}
|
865
|
-
|
866
|
-
|
867
|
-
|
868
|
-
|
869
|
-
|
870
|
-
|
871
|
-
|
872
|
-
|
873
|
-
|
874
|
-
}
|
833
|
+
// Wrap it in the drop policy.
|
834
|
+
Json::Array drop_categories;
|
835
|
+
if (discovery_entry.latest_update->drop_config != nullptr) {
|
836
|
+
for (const auto& category :
|
837
|
+
discovery_entry.latest_update->drop_config->drop_category_list()) {
|
838
|
+
drop_categories.push_back(Json::Object{
|
839
|
+
{"category", category.name},
|
840
|
+
{"requests_per_million", category.parts_per_million},
|
841
|
+
});
|
842
|
+
}
|
875
843
|
}
|
876
|
-
|
877
|
-
|
878
|
-
|
879
|
-
|
880
|
-
|
881
|
-
|
882
|
-
|
883
|
-
|
884
|
-
|
885
|
-
|
886
|
-
|
887
|
-
|
888
|
-
|
889
|
-
|
890
|
-
|
891
|
-
|
892
|
-
|
893
|
-
|
894
|
-
|
895
|
-
|
896
|
-
|
897
|
-
|
898
|
-
|
899
|
-
|
900
|
-
|
901
|
-
|
902
|
-
|
903
|
-
Json::Object child_config = {
|
904
|
-
{"config", std::move(locality_picking_policy)},
|
905
|
-
};
|
906
|
-
if (discovery_mechanisms_[discovery_index]
|
907
|
-
.discovery_mechanism->disable_reresolution()) {
|
908
|
-
child_config["ignore_reresolution_requests"] = true;
|
909
|
-
}
|
910
|
-
priority_children[child_name] = std::move(child_config);
|
911
|
-
// Each priority in the priority_list_ should correspond to a priority in a
|
912
|
-
// discovery mechanism in discovery_mechanisms_ (both in the same order).
|
913
|
-
// Keeping track of the discovery_mechanism each priority belongs to.
|
914
|
-
--num_priorities_remaining_in_discovery;
|
915
|
-
while (num_priorities_remaining_in_discovery == 0 &&
|
916
|
-
discovery_index < discovery_mechanisms_.size() - 1) {
|
917
|
-
++discovery_index;
|
918
|
-
num_priorities_remaining_in_discovery =
|
919
|
-
discovery_mechanisms_[discovery_index].num_priorities;
|
844
|
+
Json::Object xds_cluster_impl_config = {
|
845
|
+
{"clusterName", discovery_config.cluster_name},
|
846
|
+
{"childPolicy", std::move(child_policy)},
|
847
|
+
{"dropCategories", std::move(drop_categories)},
|
848
|
+
{"maxConcurrentRequests", discovery_config.max_concurrent_requests},
|
849
|
+
};
|
850
|
+
if (!discovery_config.eds_service_name.empty()) {
|
851
|
+
xds_cluster_impl_config["edsServiceName"] =
|
852
|
+
discovery_config.eds_service_name;
|
853
|
+
}
|
854
|
+
if (discovery_config.lrs_load_reporting_server.has_value()) {
|
855
|
+
xds_cluster_impl_config["lrsLoadReportingServer"] =
|
856
|
+
discovery_config.lrs_load_reporting_server->ToJson();
|
857
|
+
}
|
858
|
+
Json locality_picking_policy = Json::Array{Json::Object{
|
859
|
+
{"xds_cluster_impl_experimental", std::move(xds_cluster_impl_config)},
|
860
|
+
}};
|
861
|
+
// Add priority entry, with the appropriate child name.
|
862
|
+
std::string child_name = discovery_entry.GetChildPolicyName(priority);
|
863
|
+
priority_priorities.emplace_back(child_name);
|
864
|
+
Json::Object child_config = {
|
865
|
+
{"config", std::move(locality_picking_policy)},
|
866
|
+
};
|
867
|
+
if (discovery_entry.discovery_mechanism->disable_reresolution()) {
|
868
|
+
child_config["ignore_reresolution_requests"] = true;
|
869
|
+
}
|
870
|
+
priority_children[child_name] = std::move(child_config);
|
920
871
|
}
|
921
872
|
}
|
922
|
-
// There should be matching number of priorities in discovery_mechanisms_ and
|
923
|
-
// in priority_list_; therefore at the end of looping through all the
|
924
|
-
// priorities, num_priorities_remaining should be down to 0, and index should
|
925
|
-
// be the last index in discovery_mechanisms_.
|
926
|
-
GPR_ASSERT(num_priorities_remaining_in_discovery == 0);
|
927
|
-
GPR_ASSERT(discovery_index == discovery_mechanisms_.size() - 1);
|
928
873
|
Json json = Json::Array{Json::Object{
|
929
874
|
{"priority_experimental",
|
930
875
|
Json::Object{
|