grpc 1.48.0 → 1.50.0
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 +114 -150
- data/include/grpc/event_engine/endpoint_config.h +11 -5
- data/include/grpc/event_engine/event_engine.h +20 -17
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +19 -28
- data/include/grpc/impl/codegen/atm_gcc_sync.h +0 -2
- data/include/grpc/impl/codegen/atm_windows.h +0 -2
- data/include/grpc/impl/codegen/grpc_types.h +9 -8
- data/include/grpc/impl/codegen/port_platform.h +0 -8
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +6 -6
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +2 -2
- data/src/core/ext/filters/client_channel/backup_poller.cc +4 -6
- data/src/core/ext/filters/client_channel/client_channel.cc +154 -218
- data/src/core/ext/filters/client_channel/client_channel.h +16 -9
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +0 -29
- data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -10
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +0 -16
- data/src/core/ext/filters/client_channel/config_selector.h +12 -4
- data/src/core/ext/filters/client_channel/connector.h +4 -5
- data/src/core/ext/filters/client_channel/http_proxy.cc +55 -74
- data/src/core/ext/filters/client_channel/http_proxy.h +15 -11
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +20 -16
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +11 -10
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +0 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +181 -194
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +12 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +5 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +20 -11
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +250 -146
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +41 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +35 -32
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +195 -299
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +237 -250
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +12 -7
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +431 -498
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +31 -30
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +27 -27
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +108 -124
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +68 -76
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +131 -227
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +126 -121
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +325 -304
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +4 -8
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +431 -145
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +172 -101
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +20 -7
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +18 -16
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +7 -17
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +11 -0
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +51 -32
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +87 -41
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +16 -6
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +5 -13
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +167 -168
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +40 -32
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +7 -10
- data/src/core/ext/filters/client_channel/retry_filter.cc +25 -36
- data/src/core/ext/filters/client_channel/retry_service_config.cc +30 -19
- data/src/core/ext/filters/client_channel/retry_service_config.h +6 -9
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +6 -7
- data/src/core/ext/filters/client_channel/subchannel.cc +86 -121
- data/src/core/ext/filters/client_channel/subchannel.h +20 -11
- data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +1 -1
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +6 -76
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +16 -25
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +4 -6
- data/src/core/ext/filters/deadline/deadline_filter.cc +6 -6
- data/src/core/ext/filters/deadline/deadline_filter.h +2 -3
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +24 -19
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +9 -1
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +17 -12
- data/src/core/ext/filters/fault_injection/service_config_parser.h +4 -5
- data/src/core/ext/filters/http/client/http_client_filter.cc +3 -5
- data/src/core/ext/filters/http/client/http_client_filter.h +1 -1
- data/src/core/ext/filters/http/client_authority_filter.cc +1 -2
- data/src/core/ext/filters/http/client_authority_filter.h +1 -1
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +2 -4
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +0 -2
- data/src/core/ext/filters/http/server/http_server_filter.cc +3 -5
- data/src/core/ext/filters/http/server/http_server_filter.h +1 -1
- data/src/core/ext/filters/message_size/message_size_filter.cc +13 -7
- data/src/core/ext/filters/message_size/message_size_filter.h +3 -6
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +16 -12
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +4 -6
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +5 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +3 -5
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +40 -63
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +86 -107
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +4 -6
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +155 -295
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +3 -2
- data/src/core/ext/transport/chttp2/transport/decode_huff.cc +287 -0
- data/src/core/ext/transport/chttp2/transport/decode_huff.h +1018 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +139 -42
- data/src/core/ext/transport/chttp2/transport/flow_control.h +12 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +1 -2
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +7 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +27 -28
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +4 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +0 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +8 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +30 -38
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +1 -10
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +11 -6
- data/src/core/ext/transport/chttp2/transport/internal.h +4 -1
- data/src/core/ext/transport/chttp2/transport/parsing.cc +44 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +3 -14
- data/src/core/ext/transport/inproc/inproc_transport.cc +41 -77
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +24 -8
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +8 -327
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +83 -1723
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +352 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +1768 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +6 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +33 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -3
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +14 -14
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +90 -30
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +21 -19
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +124 -34
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +23 -22
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +153 -48
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +11 -11
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +84 -28
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +25 -23
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +156 -48
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +12 -12
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +78 -26
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +54 -18
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +21 -20
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +117 -44
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +36 -12
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +37 -13
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +170 -15
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +7 -4
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +36 -4
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +6 -6
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +48 -16
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +54 -18
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +21 -9
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +100 -14
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +7 -22
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +36 -77
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +121 -76
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +647 -163
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +34 -15
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +161 -22
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +98 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +1 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +11 -4
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +58 -4
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +35 -27
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +177 -52
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +10 -8
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +66 -14
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +12 -4
- 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/ads.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +131 -16
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +632 -12
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +24 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +24 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +202 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +6 -2
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -1
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +11 -11
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +66 -22
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +9 -9
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +72 -24
- data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
- data/src/core/ext/upb-generated/google/api/http.upb.h +18 -6
- data/src/core/ext/upb-generated/google/api/httpbody.upb.c +1 -1
- data/src/core/ext/upb-generated/google/api/httpbody.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +44 -43
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +177 -55
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +2 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +18 -6
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +6 -6
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +54 -18
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +6 -2
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +2 -2
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +24 -8
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +6 -2
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +7 -7
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +60 -20
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +1 -1
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +6 -6
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +54 -18
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +2 -2
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +7 -7
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +42 -14
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +23 -11
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -3
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +7 -3
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -3
- data/src/core/ext/upb-generated/validate/validate.upb.c +22 -22
- data/src/core/ext/upb-generated/validate/validate.upb.h +139 -47
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +23 -11
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +7 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +27 -11
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +7 -3
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +2 -2
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +6 -6
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +54 -18
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +2 -2
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +6 -2
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +67 -274
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +0 -85
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +256 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +115 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +14 -11
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +107 -107
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +191 -187
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +156 -154
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +186 -183
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +136 -134
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +16 -16
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +162 -139
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +39 -31
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +12 -8
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +72 -75
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +0 -5
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +713 -670
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +150 -139
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +47 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +16 -12
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +46 -25
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +477 -466
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +21 -18
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +153 -84
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +113 -113
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +29 -28
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +69 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +92 -90
- data/src/core/ext/xds/certificate_provider_store.cc +63 -3
- data/src/core/ext/xds/certificate_provider_store.h +9 -1
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +5 -5
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +1 -1
- data/src/core/ext/xds/upb_utils.h +0 -21
- data/src/core/ext/xds/xds_api.cc +73 -102
- data/src/core/ext/xds/xds_api.h +26 -28
- data/src/core/ext/xds/xds_bootstrap.cc +5 -550
- data/src/core/ext/xds/xds_bootstrap.h +39 -91
- data/src/core/ext/xds/xds_bootstrap_grpc.cc +370 -0
- data/src/core/ext/xds/xds_bootstrap_grpc.h +169 -0
- data/src/core/ext/xds/xds_certificate_provider.h +9 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +6 -4
- data/src/core/ext/xds/xds_channel_stack_modifier.h +8 -0
- data/src/core/ext/xds/xds_client.cc +732 -1317
- data/src/core/ext/xds/xds_client.h +33 -59
- data/src/core/ext/xds/xds_client_grpc.cc +229 -0
- data/src/core/ext/xds/xds_client_grpc.h +79 -0
- data/src/core/ext/xds/xds_client_stats.cc +4 -4
- data/src/core/ext/xds/xds_cluster.cc +162 -165
- data/src/core/ext/xds/xds_cluster.h +8 -7
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +12 -14
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +1 -0
- data/src/core/ext/xds/xds_common_types.cc +140 -108
- data/src/core/ext/xds/xds_common_types.h +6 -7
- data/src/core/ext/xds/xds_endpoint.cc +87 -85
- data/src/core/ext/xds/xds_endpoint.h +4 -5
- data/src/core/ext/xds/xds_http_fault_filter.cc +4 -11
- data/src/core/ext/xds/xds_http_fault_filter.h +3 -3
- data/src/core/ext/xds/xds_http_filters.h +3 -3
- data/src/core/ext/xds/xds_http_rbac_filter.cc +39 -58
- data/src/core/ext/xds/xds_http_rbac_filter.h +3 -3
- data/src/core/ext/xds/xds_lb_policy_registry.cc +21 -22
- data/src/core/ext/xds/xds_lb_policy_registry.h +4 -4
- data/src/core/ext/xds/xds_listener.cc +348 -313
- data/src/core/ext/xds/xds_listener.h +4 -5
- data/src/core/ext/xds/xds_resource_type.h +23 -9
- data/src/core/ext/xds/xds_route_config.cc +193 -191
- data/src/core/ext/xds/xds_route_config.h +31 -17
- data/src/core/ext/xds/xds_routing.cc +3 -6
- data/src/core/ext/xds/xds_routing.h +7 -9
- data/src/core/ext/xds/xds_server_config_fetcher.cc +81 -84
- data/src/core/ext/xds/xds_transport.h +86 -0
- data/src/core/ext/xds/xds_transport_grpc.cc +357 -0
- data/src/core/ext/xds/xds_transport_grpc.h +135 -0
- data/src/core/lib/address_utils/parse_address.cc +19 -17
- data/src/core/lib/address_utils/parse_address.h +8 -5
- data/src/core/lib/avl/avl.h +47 -25
- data/src/core/lib/backoff/backoff.cc +2 -4
- data/src/core/lib/channel/call_finalization.h +1 -3
- data/src/core/lib/channel/call_tracer.h +1 -1
- data/src/core/lib/channel/channel_args.cc +88 -19
- data/src/core/lib/channel/channel_args.h +218 -67
- data/src/core/lib/channel/channel_stack.cc +0 -1
- data/src/core/lib/channel/channel_stack_builder.cc +3 -3
- data/src/core/lib/channel/channel_stack_builder.h +2 -2
- data/src/core/lib/channel/channel_stack_builder_impl.cc +2 -4
- data/src/core/lib/channel/channel_trace.cc +3 -4
- data/src/core/lib/channel/channelz.cc +27 -37
- data/src/core/lib/channel/channelz.h +9 -0
- data/src/core/lib/channel/promise_based_filter.cc +18 -19
- data/src/core/lib/channel/promise_based_filter.h +0 -1
- data/src/core/lib/channel/status_util.cc +27 -0
- data/src/core/lib/channel/status_util.h +10 -0
- data/src/core/lib/config/core_configuration.cc +5 -1
- data/src/core/lib/config/core_configuration.h +81 -35
- data/src/core/lib/debug/stats.cc +39 -46
- data/src/core/lib/debug/stats.h +11 -13
- data/src/core/lib/debug/stats_data.cc +118 -614
- data/src/core/lib/debug/stats_data.h +67 -465
- data/src/core/lib/debug/trace.cc +0 -2
- data/src/core/lib/event_engine/channel_args_endpoint_config.cc +12 -20
- data/src/core/lib/event_engine/channel_args_endpoint_config.h +13 -7
- data/src/core/lib/event_engine/{event_engine.cc → default_event_engine.cc} +9 -5
- data/src/core/lib/event_engine/{event_engine_factory.h → default_event_engine.h} +4 -8
- data/src/core/lib/event_engine/default_event_engine_factory.cc +20 -3
- data/src/core/lib/event_engine/default_event_engine_factory.h +33 -0
- data/src/core/lib/event_engine/executor/executor.h +38 -0
- data/src/core/lib/event_engine/executor/threaded_executor.cc +36 -0
- data/src/core/lib/event_engine/executor/threaded_executor.h +44 -0
- data/src/core/lib/event_engine/forkable.cc +101 -0
- data/src/core/lib/event_engine/forkable.h +61 -0
- data/src/core/lib/event_engine/poller.h +56 -0
- data/src/core/lib/event_engine/{iomgr_engine/iomgr_engine.cc → posix_engine/posix_engine.cc} +30 -47
- data/src/core/lib/event_engine/{iomgr_engine/iomgr_engine.h → posix_engine/posix_engine.h} +27 -28
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer.cc +4 -5
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer.h +8 -8
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_heap.cc +4 -4
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_heap.h +5 -5
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_manager.cc +87 -30
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_manager.h +40 -9
- data/src/core/lib/event_engine/socket_notifier.h +55 -0
- data/src/core/lib/event_engine/thread_pool.cc +195 -0
- data/src/core/lib/event_engine/thread_pool.h +114 -0
- data/src/core/lib/event_engine/time_util.cc +30 -0
- data/src/core/lib/event_engine/time_util.h +32 -0
- data/src/core/lib/event_engine/utils.cc +44 -0
- data/src/core/lib/event_engine/utils.h +36 -0
- data/src/core/lib/event_engine/windows/iocp.cc +155 -0
- data/src/core/lib/event_engine/windows/iocp.h +69 -0
- data/src/core/lib/event_engine/windows/win_socket.cc +196 -0
- data/src/core/lib/event_engine/windows/win_socket.h +120 -0
- data/src/core/lib/event_engine/windows/windows_engine.cc +159 -0
- data/src/core/lib/event_engine/windows/windows_engine.h +120 -0
- data/src/core/lib/experiments/config.cc +146 -0
- data/src/core/lib/experiments/config.h +43 -0
- data/src/core/lib/experiments/experiments.cc +75 -0
- data/src/core/lib/experiments/experiments.h +56 -0
- data/src/core/lib/gpr/alloc.cc +1 -9
- data/src/core/lib/gpr/log_windows.cc +0 -1
- data/src/core/lib/gpr/string_util_windows.cc +3 -30
- data/src/core/lib/gpr/sync_abseil.cc +0 -14
- data/src/core/lib/gpr/sync_posix.cc +0 -14
- data/src/core/lib/gpr/time.cc +11 -9
- data/src/core/lib/gpr/time_posix.cc +0 -6
- data/src/core/lib/gpr/time_precise.h +1 -1
- data/src/core/lib/gpr/tmpfile_windows.cc +5 -7
- data/src/core/lib/gpr/useful.h +40 -0
- data/src/core/lib/gprpp/bitset.h +3 -13
- data/src/core/lib/gprpp/debug_location.h +39 -7
- data/src/core/lib/{gpr → gprpp}/env.h +25 -12
- data/src/core/lib/{gpr → gprpp}/env_linux.cc +20 -15
- data/src/core/lib/{gpr → gprpp}/env_posix.cc +11 -10
- data/src/core/lib/gprpp/env_windows.cc +56 -0
- data/src/core/lib/gprpp/fork.cc +14 -22
- data/src/core/lib/gprpp/fork.h +0 -8
- data/src/core/lib/gprpp/global_config_env.cc +7 -6
- data/src/core/lib/gprpp/manual_constructor.h +0 -1
- data/src/core/lib/gprpp/no_destruct.h +94 -0
- data/src/core/lib/gprpp/notification.h +67 -0
- data/src/core/lib/gprpp/packed_table.h +40 -0
- data/src/core/lib/gprpp/ref_counted_ptr.h +20 -34
- data/src/core/lib/gprpp/sorted_pack.h +98 -0
- data/src/core/lib/gprpp/status_helper.cc +1 -0
- data/src/core/lib/gprpp/status_helper.h +6 -0
- data/src/core/lib/gprpp/table.h +9 -2
- data/src/core/lib/gprpp/tchar.cc +49 -0
- data/src/core/lib/gprpp/tchar.h +33 -0
- data/src/core/lib/gprpp/time.cc +21 -0
- data/src/core/lib/gprpp/time.h +55 -0
- data/src/core/lib/{event_engine/iomgr_engine → gprpp}/time_averaged_stats.cc +3 -5
- data/src/core/lib/{event_engine/iomgr_engine → gprpp}/time_averaged_stats.h +5 -7
- data/src/core/lib/gprpp/validation_errors.cc +61 -0
- data/src/core/lib/gprpp/validation_errors.h +110 -0
- data/src/core/lib/{iomgr → gprpp}/work_serializer.cc +34 -18
- data/src/core/lib/{iomgr → gprpp}/work_serializer.h +21 -27
- data/src/core/{ext/filters/client_channel → lib/handshaker}/proxy_mapper.h +16 -17
- data/src/core/lib/handshaker/proxy_mapper_registry.cc +71 -0
- data/src/core/lib/handshaker/proxy_mapper_registry.h +75 -0
- data/src/core/lib/http/httpcli.cc +12 -24
- data/src/core/lib/http/httpcli_security_connector.cc +11 -11
- data/src/core/lib/iomgr/call_combiner.cc +0 -34
- data/src/core/lib/iomgr/closure.h +0 -10
- data/src/core/lib/iomgr/combiner.cc +0 -20
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +14 -9
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +2 -2
- data/src/core/lib/iomgr/error.cc +0 -773
- data/src/core/lib/iomgr/error.h +0 -145
- data/src/core/lib/iomgr/error_cfstream.cc +0 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +1 -38
- data/src/core/lib/iomgr/ev_poll_posix.cc +19 -26
- data/src/core/lib/iomgr/exec_ctx.cc +0 -22
- data/src/core/lib/iomgr/exec_ctx.h +7 -31
- data/src/core/lib/iomgr/executor.cc +0 -10
- data/src/core/lib/iomgr/executor.h +0 -3
- data/src/core/lib/iomgr/iocp_windows.cc +1 -2
- data/src/core/lib/iomgr/iomgr.cc +6 -8
- data/src/core/lib/iomgr/iomgr_fwd.h +1 -0
- data/src/core/lib/iomgr/lockfree_event.cc +0 -17
- data/src/core/lib/iomgr/pollset.h +1 -1
- data/src/core/lib/iomgr/pollset_set.h +0 -1
- data/src/core/lib/iomgr/port.h +3 -0
- data/src/core/lib/iomgr/resolve_address.h +30 -6
- data/src/core/lib/iomgr/resolve_address_impl.h +1 -0
- data/src/core/lib/iomgr/resolve_address_posix.cc +43 -8
- data/src/core/lib/iomgr/resolve_address_posix.h +19 -5
- data/src/core/lib/iomgr/resolve_address_windows.cc +45 -10
- data/src/core/lib/iomgr/resolve_address_windows.h +19 -5
- data/src/core/lib/iomgr/sockaddr_utils_posix.cc +2 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +12 -34
- data/src/core/lib/iomgr/socket_utils_posix.cc +83 -1
- data/src/core/lib/iomgr/socket_utils_posix.h +98 -6
- data/src/core/lib/iomgr/socket_windows.h +0 -2
- data/src/core/lib/iomgr/tcp_client.cc +6 -7
- data/src/core/lib/iomgr/tcp_client.h +11 -11
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +6 -6
- data/src/core/lib/iomgr/tcp_client_posix.cc +33 -29
- data/src/core/lib/iomgr/tcp_client_posix.h +12 -9
- data/src/core/lib/iomgr/tcp_client_windows.cc +6 -6
- data/src/core/lib/iomgr/tcp_posix.cc +249 -120
- data/src/core/lib/iomgr/tcp_posix.h +3 -1
- data/src/core/lib/iomgr/tcp_server.cc +5 -4
- data/src/core/lib/iomgr/tcp_server.h +9 -6
- data/src/core/lib/iomgr/tcp_server_posix.cc +17 -28
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +2 -2
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +3 -3
- data/src/core/lib/iomgr/tcp_server_windows.cc +6 -7
- data/src/core/lib/iomgr/tcp_windows.cc +0 -1
- data/src/core/lib/iomgr/tcp_windows.h +0 -1
- data/src/core/lib/iomgr/timer_generic.cc +10 -12
- data/src/core/lib/iomgr/timer_manager.cc +1 -2
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +0 -2
- data/src/core/lib/json/json.h +19 -22
- data/src/core/lib/json/json_args.h +34 -0
- data/src/core/lib/json/json_object_loader.cc +202 -0
- data/src/core/lib/json/json_object_loader.h +598 -0
- data/src/core/lib/json/json_reader.cc +86 -62
- data/src/core/lib/json/json_util.cc +9 -36
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.cc +3 -44
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.h +20 -29
- data/src/core/lib/load_balancing/lb_policy_factory.h +49 -0
- data/src/core/lib/load_balancing/lb_policy_registry.cc +141 -0
- data/src/core/lib/load_balancing/lb_policy_registry.h +82 -0
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/subchannel_interface.h +6 -6
- data/src/core/lib/promise/activity.h +57 -10
- data/src/core/lib/promise/arena_promise.h +84 -81
- data/src/core/lib/promise/context.h +1 -2
- data/src/core/lib/promise/detail/basic_seq.h +43 -23
- data/src/core/lib/promise/detail/promise_factory.h +0 -1
- data/src/core/lib/promise/map.h +0 -1
- data/src/core/lib/promise/seq.h +25 -4
- data/src/core/lib/promise/sleep.cc +50 -42
- data/src/core/lib/promise/sleep.h +32 -23
- data/src/core/lib/promise/try_seq.h +26 -6
- data/src/core/lib/resolver/resolver.cc +0 -47
- data/src/core/lib/resolver/resolver.h +15 -15
- data/src/core/lib/resolver/resolver_factory.h +2 -3
- data/src/core/lib/resolver/resolver_registry.cc +1 -1
- data/src/core/lib/resolver/resolver_registry.h +2 -3
- data/src/core/lib/resolver/server_address.cc +11 -15
- data/src/core/lib/resolver/server_address.h +4 -8
- data/src/core/lib/resource_quota/api.cc +10 -1
- data/src/core/lib/resource_quota/api.h +6 -0
- data/src/core/lib/resource_quota/arena.cc +19 -1
- data/src/core/lib/resource_quota/arena.h +24 -2
- data/src/core/lib/resource_quota/memory_quota.cc +143 -19
- data/src/core/lib/resource_quota/memory_quota.h +85 -17
- data/src/core/lib/resource_quota/periodic_update.cc +78 -0
- data/src/core/lib/resource_quota/periodic_update.h +71 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +10 -7
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -2
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -1
- data/src/core/lib/security/authorization/matchers.cc +13 -10
- data/src/core/lib/security/authorization/rbac_policy.cc +0 -1
- data/src/core/{ext/xds → lib/security/certificate_provider}/certificate_provider_factory.h +3 -3
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +60 -0
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +70 -0
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -3
- data/src/core/lib/security/credentials/alts/alts_credentials.h +3 -4
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +1 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +3 -7
- data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -4
- data/src/core/lib/security/credentials/credentials.h +16 -12
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +33 -27
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +34 -24
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -6
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +4 -6
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +3 -12
- data/src/core/lib/security/credentials/fake/fake_credentials.h +0 -4
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +5 -8
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +35 -32
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +1 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +0 -1
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +3 -3
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +3 -4
- data/src/core/lib/security/credentials/jwt/json_token.cc +12 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +4 -8
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +14 -15
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +1 -1
- data/src/core/lib/security/credentials/local/local_credentials.cc +3 -4
- data/src/core/lib/security/credentials/local/local_credentials.h +3 -4
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +18 -20
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +0 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +13 -21
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +3 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +4 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +10 -2
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +13 -25
- data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -4
- data/src/core/lib/security/credentials/tls/tls_utils.cc +3 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +13 -30
- data/src/core/lib/security/credentials/xds/xds_credentials.h +3 -3
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +10 -18
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +26 -38
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +5 -5
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +6 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +13 -11
- data/src/core/lib/security/security_connector/local/local_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/security_connector.h +5 -3
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +5 -4
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +5 -5
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +5 -5
- data/src/core/lib/security/transport/auth_filters.h +1 -1
- data/src/core/lib/security/transport/client_auth_filter.cc +15 -5
- data/src/core/lib/security/transport/secure_endpoint.cc +0 -4
- data/src/core/lib/security/transport/security_handshaker.cc +32 -44
- data/src/core/lib/security/transport/security_handshaker.h +2 -1
- data/src/core/lib/service_config/service_config.h +11 -0
- data/src/core/lib/service_config/service_config_impl.cc +98 -97
- data/src/core/lib/service_config/service_config_impl.h +11 -13
- data/src/core/lib/service_config/service_config_parser.cc +26 -27
- data/src/core/lib/service_config/service_config_parser.h +10 -22
- data/src/core/lib/slice/percent_encoding.cc +4 -13
- data/src/core/lib/slice/slice.cc +10 -4
- data/src/core/lib/surface/call.cc +9 -13
- data/src/core/lib/surface/channel.cc +9 -8
- data/src/core/lib/surface/channel.h +1 -1
- data/src/core/lib/surface/completion_queue.cc +16 -30
- data/src/core/lib/surface/completion_queue.h +1 -4
- data/src/core/lib/surface/completion_queue_factory.cc +5 -0
- data/src/core/lib/surface/init.cc +17 -16
- data/src/core/lib/surface/init_internally.cc +24 -0
- data/src/core/lib/surface/init_internally.h +28 -0
- data/src/core/lib/surface/lame_client.cc +2 -3
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +8 -19
- data/src/core/lib/surface/server.h +11 -13
- data/src/core/lib/surface/validate_metadata.cc +4 -14
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +1 -3
- data/src/core/lib/transport/connectivity_state.cc +0 -1
- data/src/core/lib/transport/connectivity_state.h +1 -1
- data/src/core/lib/transport/error_utils.cc +0 -36
- data/src/core/lib/transport/handshaker.cc +7 -9
- data/src/core/lib/transport/handshaker.h +4 -5
- data/src/core/lib/transport/handshaker_factory.h +2 -3
- data/src/core/lib/transport/handshaker_registry.cc +2 -1
- data/src/core/lib/transport/handshaker_registry.h +2 -4
- data/src/core/lib/transport/http_connect_handshaker.cc +16 -16
- data/src/core/lib/transport/metadata_batch.cc +7 -3
- data/src/core/lib/transport/metadata_batch.h +61 -14
- data/src/core/lib/transport/parsed_metadata.h +4 -3
- data/src/core/lib/transport/status_conversion.cc +1 -3
- data/src/core/lib/transport/tcp_connect_handshaker.cc +20 -22
- data/src/core/lib/transport/transport.h +0 -8
- data/src/core/lib/transport/transport_impl.h +0 -1
- data/src/core/plugin_registry/grpc_plugin_registry.cc +23 -46
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +13 -25
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +40 -21
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +14 -7
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +1 -1
- data/src/core/tsi/fake_transport_security.cc +53 -30
- data/src/core/tsi/local_transport_security.cc +9 -5
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +10 -1
- data/src/core/tsi/ssl_transport_security.cc +47 -23
- data/src/core/tsi/transport_security.cc +18 -6
- data/src/core/tsi/transport_security.h +2 -1
- data/src/core/tsi/transport_security_interface.h +17 -5
- data/src/ruby/ext/grpc/extconf.rb +2 -0
- data/src/ruby/ext/grpc/rb_loader.c +6 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -0
- data/src/ruby/spec/channel_spec.rb +5 -0
- data/src/ruby/spec/generic/server_interceptors_spec.rb +1 -1
- data/src/ruby/spec/user_agent_spec.rb +1 -1
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +313 -0
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +857 -0
- data/third_party/upb/third_party/utf8_range/utf8_range.h +1 -1
- data/third_party/upb/upb/arena.c +277 -0
- data/third_party/upb/upb/arena.h +225 -0
- data/third_party/upb/upb/array.c +114 -0
- data/third_party/upb/upb/array.h +83 -0
- data/third_party/upb/upb/collections.h +36 -0
- data/third_party/upb/upb/decode.c +161 -65
- data/third_party/upb/upb/decode.h +1 -0
- data/third_party/upb/upb/decode_fast.c +1 -1
- data/third_party/upb/upb/def.c +10 -2
- data/third_party/upb/upb/def.h +8 -1
- data/third_party/upb/upb/def.hpp +7 -4
- data/third_party/upb/upb/encode.c +29 -20
- data/third_party/upb/upb/encode.h +16 -6
- data/third_party/upb/upb/extension_registry.c +93 -0
- data/third_party/upb/upb/extension_registry.h +84 -0
- data/third_party/upb/upb/{decode_internal.h → internal/decode.h} +5 -5
- data/third_party/upb/upb/internal/table.h +385 -0
- data/third_party/upb/upb/{upb_internal.h → internal/upb.h} +3 -3
- data/third_party/upb/upb/internal/vsnprintf_compat.h +52 -0
- data/third_party/upb/upb/json_decode.c +1512 -0
- data/third_party/upb/upb/json_decode.h +47 -0
- data/third_party/upb/upb/json_encode.c +7 -3
- data/third_party/upb/upb/json_encode.h +6 -3
- data/third_party/upb/upb/map.c +108 -0
- data/third_party/upb/upb/map.h +117 -0
- data/third_party/upb/upb/message_value.h +66 -0
- data/third_party/upb/upb/mini_table.c +1147 -0
- data/third_party/upb/upb/mini_table.h +189 -0
- data/third_party/upb/upb/mini_table.hpp +112 -0
- data/third_party/upb/upb/msg.c +2 -62
- data/third_party/upb/upb/msg.h +2 -45
- data/third_party/upb/upb/msg_internal.h +28 -22
- data/third_party/upb/upb/port_def.inc +2 -1
- data/third_party/upb/upb/port_undef.inc +1 -0
- data/third_party/upb/upb/reflection.c +2 -159
- data/third_party/upb/upb/reflection.h +2 -112
- data/third_party/upb/upb/status.c +86 -0
- data/third_party/upb/upb/status.h +66 -0
- data/third_party/upb/upb/table.c +2 -2
- data/third_party/upb/upb/table_internal.h +3 -352
- data/third_party/upb/upb/text_encode.c +3 -2
- data/third_party/upb/upb/upb.c +4 -290
- data/third_party/upb/upb/upb.h +7 -196
- metadata +117 -51
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -50
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +0 -190
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +0 -70
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +0 -90
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +0 -55
- data/src/core/ext/xds/certificate_provider_registry.cc +0 -103
- data/src/core/ext/xds/certificate_provider_registry.h +0 -59
- data/src/core/lib/event_engine/iomgr_engine/thread_pool.cc +0 -123
- data/src/core/lib/event_engine/iomgr_engine/thread_pool.h +0 -70
- data/src/core/lib/event_engine/promise.h +0 -69
- data/src/core/lib/gpr/env_windows.cc +0 -74
- data/src/core/lib/gpr/string_windows.h +0 -32
- data/src/core/lib/iomgr/error_internal.h +0 -66
- data/src/core/lib/iomgr/executor/mpmcqueue.cc +0 -182
- data/src/core/lib/iomgr/executor/mpmcqueue.h +0 -171
- data/src/core/lib/iomgr/executor/threadpool.cc +0 -136
- data/src/core/lib/iomgr/executor/threadpool.h +0 -150
- data/src/core/lib/iomgr/time_averaged_stats.cc +0 -64
- data/src/core/lib/iomgr/time_averaged_stats.h +0 -72
- data/src/core/lib/profiling/basic_timers.cc +0 -295
- data/src/core/lib/profiling/stap_timers.cc +0 -50
- data/src/core/lib/profiling/timers.h +0 -94
- data/src/core/lib/promise/detail/switch.h +0 -1455
@@ -27,11 +27,11 @@
|
|
27
27
|
#include <utility>
|
28
28
|
#include <vector>
|
29
29
|
|
30
|
-
#include "absl/container/inlined_vector.h"
|
31
30
|
#include "absl/memory/memory.h"
|
32
31
|
#include "absl/status/status.h"
|
33
32
|
#include "absl/status/statusor.h"
|
34
33
|
#include "absl/strings/str_cat.h"
|
34
|
+
#include "absl/strings/str_join.h"
|
35
35
|
#include "absl/strings/string_view.h"
|
36
36
|
#include "absl/types/optional.h"
|
37
37
|
|
@@ -39,34 +39,36 @@
|
|
39
39
|
#include <grpc/impl/codegen/grpc_types.h>
|
40
40
|
#include <grpc/support/log.h>
|
41
41
|
|
42
|
-
#include "src/core/ext/filters/client_channel/lb_policy.h"
|
43
42
|
#include "src/core/ext/filters/client_channel/lb_policy/address_filtering.h"
|
44
43
|
#include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
|
45
44
|
#include "src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h"
|
46
45
|
#include "src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h"
|
47
46
|
#include "src/core/ext/filters/client_channel/lb_policy/xds/xds.h"
|
48
47
|
#include "src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h"
|
49
|
-
#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
|
50
|
-
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
|
51
48
|
#include "src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h"
|
52
|
-
#include "src/core/ext/filters/client_channel/subchannel_interface.h"
|
53
49
|
#include "src/core/ext/xds/xds_bootstrap.h"
|
50
|
+
#include "src/core/ext/xds/xds_bootstrap_grpc.h"
|
54
51
|
#include "src/core/ext/xds/xds_client.h"
|
52
|
+
#include "src/core/ext/xds/xds_client_grpc.h"
|
55
53
|
#include "src/core/ext/xds/xds_client_stats.h"
|
56
54
|
#include "src/core/ext/xds/xds_endpoint.h"
|
57
55
|
#include "src/core/ext/xds/xds_resource_type_impl.h"
|
58
56
|
#include "src/core/lib/channel/channel_args.h"
|
59
57
|
#include "src/core/lib/config/core_configuration.h"
|
60
58
|
#include "src/core/lib/debug/trace.h"
|
61
|
-
#include "src/core/lib/gpr/string.h"
|
62
59
|
#include "src/core/lib/gprpp/debug_location.h"
|
63
60
|
#include "src/core/lib/gprpp/orphanable.h"
|
64
61
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
65
|
-
#include "src/core/lib/gprpp/
|
66
|
-
#include "src/core/lib/
|
62
|
+
#include "src/core/lib/gprpp/validation_errors.h"
|
63
|
+
#include "src/core/lib/gprpp/work_serializer.h"
|
67
64
|
#include "src/core/lib/iomgr/pollset_set.h"
|
68
|
-
#include "src/core/lib/iomgr/work_serializer.h"
|
69
65
|
#include "src/core/lib/json/json.h"
|
66
|
+
#include "src/core/lib/json/json_args.h"
|
67
|
+
#include "src/core/lib/json/json_object_loader.h"
|
68
|
+
#include "src/core/lib/load_balancing/lb_policy.h"
|
69
|
+
#include "src/core/lib/load_balancing/lb_policy_factory.h"
|
70
|
+
#include "src/core/lib/load_balancing/lb_policy_registry.h"
|
71
|
+
#include "src/core/lib/load_balancing/subchannel_interface.h"
|
70
72
|
#include "src/core/lib/resolver/resolver.h"
|
71
73
|
#include "src/core/lib/resolver/resolver_registry.h"
|
72
74
|
#include "src/core/lib/resolver/server_address.h"
|
@@ -82,14 +84,15 @@ const char* kXdsLocalityNameAttributeKey = "xds_locality_name";
|
|
82
84
|
|
83
85
|
namespace {
|
84
86
|
|
85
|
-
constexpr
|
87
|
+
constexpr absl::string_view kXdsClusterResolver =
|
88
|
+
"xds_cluster_resolver_experimental";
|
86
89
|
|
87
90
|
// Config for EDS LB policy.
|
88
91
|
class XdsClusterResolverLbConfig : public LoadBalancingPolicy::Config {
|
89
92
|
public:
|
90
93
|
struct DiscoveryMechanism {
|
91
94
|
std::string cluster_name;
|
92
|
-
absl::optional<
|
95
|
+
absl::optional<GrpcXdsBootstrap::GrpcXdsServer> lrs_load_reporting_server;
|
93
96
|
uint32_t max_concurrent_requests;
|
94
97
|
enum DiscoveryMechanismType {
|
95
98
|
EDS,
|
@@ -98,6 +101,13 @@ class XdsClusterResolverLbConfig : public LoadBalancingPolicy::Config {
|
|
98
101
|
DiscoveryMechanismType type;
|
99
102
|
std::string eds_service_name;
|
100
103
|
std::string dns_hostname;
|
104
|
+
|
105
|
+
// This is type Json::Object instead of OutlierDetectionConfig, because we
|
106
|
+
// don't actually need to validate the contents of the outlier detection
|
107
|
+
// config here. In this case, the JSON is generated by the CDS policy
|
108
|
+
// instead of coming from service config, so it's not actually any better
|
109
|
+
// to catch the problem here than it is to catch it in the
|
110
|
+
// outlier_detection policy itself, so here we just act as a pass-through.
|
101
111
|
absl::optional<Json::Object> outlier_detection_lb_config;
|
102
112
|
|
103
113
|
bool operator==(const DiscoveryMechanism& other) const {
|
@@ -109,23 +119,37 @@ class XdsClusterResolverLbConfig : public LoadBalancingPolicy::Config {
|
|
109
119
|
dns_hostname == other.dns_hostname &&
|
110
120
|
outlier_detection_lb_config == other.outlier_detection_lb_config);
|
111
121
|
}
|
122
|
+
|
123
|
+
static const JsonLoaderInterface* JsonLoader(const JsonArgs&);
|
124
|
+
void JsonPostLoad(const Json& json, const JsonArgs& args,
|
125
|
+
ValidationErrors* errors);
|
112
126
|
};
|
113
127
|
|
114
|
-
XdsClusterResolverLbConfig(
|
115
|
-
|
116
|
-
|
117
|
-
|
128
|
+
XdsClusterResolverLbConfig() = default;
|
129
|
+
|
130
|
+
XdsClusterResolverLbConfig(const XdsClusterResolverLbConfig&) = delete;
|
131
|
+
XdsClusterResolverLbConfig& operator=(const XdsClusterResolverLbConfig&) =
|
132
|
+
delete;
|
133
|
+
|
134
|
+
XdsClusterResolverLbConfig(XdsClusterResolverLbConfig&& other) = delete;
|
135
|
+
XdsClusterResolverLbConfig& operator=(XdsClusterResolverLbConfig&& other) =
|
136
|
+
delete;
|
137
|
+
|
138
|
+
absl::string_view name() const override { return kXdsClusterResolver; }
|
118
139
|
|
119
|
-
const char* name() const override { return kXdsClusterResolver; }
|
120
140
|
const std::vector<DiscoveryMechanism>& discovery_mechanisms() const {
|
121
141
|
return discovery_mechanisms_;
|
122
142
|
}
|
123
143
|
|
124
144
|
const Json& xds_lb_policy() const { return xds_lb_policy_; }
|
125
145
|
|
146
|
+
static const JsonLoaderInterface* JsonLoader(const JsonArgs&);
|
147
|
+
void JsonPostLoad(const Json& json, const JsonArgs& args,
|
148
|
+
ValidationErrors* errors);
|
149
|
+
|
126
150
|
private:
|
127
151
|
std::vector<DiscoveryMechanism> discovery_mechanisms_;
|
128
|
-
Json xds_lb_policy_;
|
152
|
+
Json xds_lb_policy_ = Json::Object{{"ROUND_ROBIN", Json::Object()}};
|
129
153
|
};
|
130
154
|
|
131
155
|
// Xds Cluster Resolver LB policy.
|
@@ -133,9 +157,9 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
133
157
|
public:
|
134
158
|
XdsClusterResolverLb(RefCountedPtr<XdsClient> xds_client, Args args);
|
135
159
|
|
136
|
-
|
160
|
+
absl::string_view name() const override { return kXdsClusterResolver; }
|
137
161
|
|
138
|
-
|
162
|
+
absl::Status UpdateLocked(UpdateArgs args) override;
|
139
163
|
void ResetBackoffLocked() override;
|
140
164
|
void ExitIdleLocked() override;
|
141
165
|
|
@@ -224,16 +248,44 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
224
248
|
// in methods of this class rather than in lambdas to work around an MSVC
|
225
249
|
// bug.
|
226
250
|
void OnResourceChangedHelper(XdsEndpointResource update) {
|
251
|
+
std::string resolution_note;
|
252
|
+
if (update.priorities.empty()) {
|
253
|
+
resolution_note = absl::StrCat(
|
254
|
+
"EDS resource ", discovery_mechanism_->GetEdsResourceName(),
|
255
|
+
" contains no localities");
|
256
|
+
} else {
|
257
|
+
std::set<std::string> empty_localities;
|
258
|
+
for (const auto& priority : update.priorities) {
|
259
|
+
for (const auto& p : priority.localities) {
|
260
|
+
if (p.second.endpoints.empty()) {
|
261
|
+
empty_localities.insert(p.first->AsHumanReadableString());
|
262
|
+
}
|
263
|
+
}
|
264
|
+
}
|
265
|
+
if (!empty_localities.empty()) {
|
266
|
+
resolution_note = absl::StrCat(
|
267
|
+
"EDS resource ", discovery_mechanism_->GetEdsResourceName(),
|
268
|
+
" contains empty localities: [",
|
269
|
+
absl::StrJoin(empty_localities, "; "), "]");
|
270
|
+
}
|
271
|
+
}
|
227
272
|
discovery_mechanism_->parent()->OnEndpointChanged(
|
228
|
-
discovery_mechanism_->index(), std::move(update)
|
273
|
+
discovery_mechanism_->index(), std::move(update),
|
274
|
+
std::move(resolution_note));
|
229
275
|
}
|
230
276
|
void OnErrorHelper(absl::Status status) {
|
231
|
-
discovery_mechanism_->parent()->OnError(
|
232
|
-
|
277
|
+
discovery_mechanism_->parent()->OnError(
|
278
|
+
discovery_mechanism_->index(),
|
279
|
+
absl::StrCat("EDS watcher error for resource ",
|
280
|
+
discovery_mechanism_->GetEdsResourceName(), " (",
|
281
|
+
status.ToString(), ")"));
|
233
282
|
}
|
234
283
|
void OnResourceDoesNotExistHelper() {
|
235
284
|
discovery_mechanism_->parent()->OnResourceDoesNotExist(
|
236
|
-
discovery_mechanism_->index()
|
285
|
+
discovery_mechanism_->index(),
|
286
|
+
absl::StrCat("EDS resource ",
|
287
|
+
discovery_mechanism_->GetEdsResourceName(),
|
288
|
+
" does not exist"));
|
237
289
|
}
|
238
290
|
RefCountedPtr<EdsDiscoveryMechanism> discovery_mechanism_;
|
239
291
|
};
|
@@ -288,6 +340,11 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
288
340
|
// access protected member in base class.
|
289
341
|
friend class ResolverResultHandler;
|
290
342
|
|
343
|
+
absl::string_view GetDnsHostname() const {
|
344
|
+
auto& config = parent()->config_->discovery_mechanisms()[index()];
|
345
|
+
return config.dns_hostname;
|
346
|
+
}
|
347
|
+
|
291
348
|
OrphanablePtr<Resolver> resolver_;
|
292
349
|
};
|
293
350
|
|
@@ -295,6 +352,8 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
295
352
|
OrphanablePtr<DiscoveryMechanism> discovery_mechanism;
|
296
353
|
// Most recent update reported by the discovery mechanism.
|
297
354
|
absl::optional<XdsEndpointResource> latest_update;
|
355
|
+
// Last resolution note reported by the discovery mechanism, if any.
|
356
|
+
std::string resolution_note;
|
298
357
|
// State used to retain child policy names for priority policy.
|
299
358
|
std::vector<size_t /*child_number*/> priority_child_numbers;
|
300
359
|
size_t next_available_child_number = 0;
|
@@ -317,7 +376,7 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
317
376
|
}
|
318
377
|
|
319
378
|
RefCountedPtr<SubchannelInterface> CreateSubchannel(
|
320
|
-
ServerAddress address, const
|
379
|
+
ServerAddress address, const ChannelArgs& args) override;
|
321
380
|
void UpdateState(grpc_connectivity_state state, const absl::Status& status,
|
322
381
|
std::unique_ptr<SubchannelPicker> picker) override;
|
323
382
|
// This is a no-op, because we get the addresses from the xds
|
@@ -335,25 +394,26 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
335
394
|
|
336
395
|
void ShutdownLocked() override;
|
337
396
|
|
338
|
-
void OnEndpointChanged(size_t index, XdsEndpointResource update
|
339
|
-
|
340
|
-
void
|
397
|
+
void OnEndpointChanged(size_t index, XdsEndpointResource update,
|
398
|
+
std::string resolution_note);
|
399
|
+
void OnError(size_t index, std::string resolution_note);
|
400
|
+
void OnResourceDoesNotExist(size_t index, std::string resolution_note);
|
341
401
|
|
342
402
|
void MaybeDestroyChildPolicyLocked();
|
343
403
|
|
344
|
-
|
404
|
+
absl::Status UpdateChildPolicyLocked();
|
345
405
|
OrphanablePtr<LoadBalancingPolicy> CreateChildPolicyLocked(
|
346
|
-
const
|
406
|
+
const ChannelArgs& args);
|
347
407
|
ServerAddressList CreateChildPolicyAddressesLocked();
|
408
|
+
std::string CreateChildPolicyResolutionNoteLocked();
|
348
409
|
RefCountedPtr<Config> CreateChildPolicyConfigLocked();
|
349
|
-
|
350
|
-
const grpc_channel_args* args_in);
|
410
|
+
ChannelArgs CreateChildPolicyArgsLocked(const ChannelArgs& args_in);
|
351
411
|
|
352
412
|
// The xds client and endpoint watcher.
|
353
413
|
RefCountedPtr<XdsClient> xds_client_;
|
354
414
|
|
355
415
|
// Current channel args and config from the resolver.
|
356
|
-
|
416
|
+
ChannelArgs args_;
|
357
417
|
RefCountedPtr<XdsClusterResolverLbConfig> config_;
|
358
418
|
|
359
419
|
// Internal state.
|
@@ -371,7 +431,7 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
371
431
|
|
372
432
|
RefCountedPtr<SubchannelInterface>
|
373
433
|
XdsClusterResolverLb::Helper::CreateSubchannel(ServerAddress address,
|
374
|
-
const
|
434
|
+
const ChannelArgs& args) {
|
375
435
|
if (xds_cluster_resolver_policy_->shutting_down_) return nullptr;
|
376
436
|
return xds_cluster_resolver_policy_->channel_control_helper()
|
377
437
|
->CreateSubchannel(std::move(address), args);
|
@@ -441,30 +501,26 @@ void XdsClusterResolverLb::EdsDiscoveryMechanism::Orphan() {
|
|
441
501
|
//
|
442
502
|
|
443
503
|
void XdsClusterResolverLb::LogicalDNSDiscoveryMechanism::Start() {
|
444
|
-
std::string target
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
grpc_channel_args_find_pointer<FakeResolverResponseGenerator>(
|
449
|
-
parent()->args_,
|
504
|
+
std::string target;
|
505
|
+
ChannelArgs args = parent()->args_;
|
506
|
+
auto* fake_resolver_response_generator =
|
507
|
+
args.GetPointer<FakeResolverResponseGenerator>(
|
450
508
|
GRPC_ARG_XDS_LOGICAL_DNS_CLUSTER_FAKE_RESOLVER_RESPONSE_GENERATOR);
|
451
509
|
if (fake_resolver_response_generator != nullptr) {
|
452
|
-
target = absl::StrCat("fake:",
|
453
|
-
|
454
|
-
fake_resolver_response_generator);
|
455
|
-
args = grpc_channel_args_copy_and_add(parent()->args_, &new_arg, 1);
|
510
|
+
target = absl::StrCat("fake:", GetDnsHostname());
|
511
|
+
args = args.SetObject(fake_resolver_response_generator->Ref());
|
456
512
|
} else {
|
457
|
-
target = absl::StrCat("dns:",
|
458
|
-
args = grpc_channel_args_copy(parent()->args_);
|
513
|
+
target = absl::StrCat("dns:", GetDnsHostname());
|
459
514
|
}
|
460
515
|
resolver_ = CoreConfiguration::Get().resolver_registry().CreateResolver(
|
461
516
|
target.c_str(), args, parent()->interested_parties(),
|
462
517
|
parent()->work_serializer(),
|
463
518
|
absl::make_unique<ResolverResultHandler>(
|
464
519
|
Ref(DEBUG_LOCATION, "LogicalDNSDiscoveryMechanism")));
|
465
|
-
grpc_channel_args_destroy(args);
|
466
520
|
if (resolver_ == nullptr) {
|
467
|
-
parent()->OnResourceDoesNotExist(
|
521
|
+
parent()->OnResourceDoesNotExist(
|
522
|
+
index(),
|
523
|
+
absl::StrCat("error creating DNS resolver for ", GetDnsHostname()));
|
468
524
|
return;
|
469
525
|
}
|
470
526
|
resolver_->StartLocked();
|
@@ -494,14 +550,18 @@ void XdsClusterResolverLb::LogicalDNSDiscoveryMechanism::Orphan() {
|
|
494
550
|
|
495
551
|
void XdsClusterResolverLb::LogicalDNSDiscoveryMechanism::ResolverResultHandler::
|
496
552
|
ReportResult(Resolver::Result result) {
|
553
|
+
XdsClusterResolverLb* lb_policy = discovery_mechanism_->parent();
|
554
|
+
size_t index = discovery_mechanism_->index();
|
497
555
|
if (!result.addresses.ok()) {
|
498
|
-
|
499
|
-
|
556
|
+
if (result.resolution_note.empty()) {
|
557
|
+
result.resolution_note = absl::StrCat(
|
558
|
+
"DNS resolution failed for ", discovery_mechanism_->GetDnsHostname(),
|
559
|
+
" (", result.addresses.status().ToString(), ")");
|
560
|
+
}
|
561
|
+
lb_policy->OnError(index, result.resolution_note);
|
500
562
|
return;
|
501
563
|
}
|
502
564
|
// Convert resolver result to EDS update.
|
503
|
-
// TODO(roth): Figure out a way to pass resolution_note through to the
|
504
|
-
// child policy.
|
505
565
|
XdsEndpointResource update;
|
506
566
|
XdsEndpointResource::Priority::Locality locality;
|
507
567
|
locality.name = MakeRefCounted<XdsLocalityName>("", "", "");
|
@@ -510,8 +570,8 @@ void XdsClusterResolverLb::LogicalDNSDiscoveryMechanism::ResolverResultHandler::
|
|
510
570
|
XdsEndpointResource::Priority priority;
|
511
571
|
priority.localities.emplace(locality.name.get(), std::move(locality));
|
512
572
|
update.priorities.emplace_back(std::move(priority));
|
513
|
-
|
514
|
-
|
573
|
+
lb_policy->OnEndpointChanged(index, std::move(update),
|
574
|
+
std::move(result.resolution_note));
|
515
575
|
}
|
516
576
|
|
517
577
|
//
|
@@ -560,9 +620,7 @@ void XdsClusterResolverLb::ShutdownLocked() {
|
|
560
620
|
MaybeDestroyChildPolicyLocked();
|
561
621
|
discovery_mechanisms_.clear();
|
562
622
|
xds_client_.reset(DEBUG_LOCATION, "XdsClusterResolverLb");
|
563
|
-
|
564
|
-
grpc_channel_args_destroy(args_);
|
565
|
-
args_ = nullptr;
|
623
|
+
args_ = ChannelArgs();
|
566
624
|
}
|
567
625
|
|
568
626
|
void XdsClusterResolverLb::MaybeDestroyChildPolicyLocked() {
|
@@ -573,20 +631,19 @@ void XdsClusterResolverLb::MaybeDestroyChildPolicyLocked() {
|
|
573
631
|
}
|
574
632
|
}
|
575
633
|
|
576
|
-
|
634
|
+
absl::Status XdsClusterResolverLb::UpdateLocked(UpdateArgs args) {
|
577
635
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_cluster_resolver_trace)) {
|
578
636
|
gpr_log(GPR_INFO, "[xds_cluster_resolver_lb %p] Received update", this);
|
579
637
|
}
|
580
|
-
const bool is_initial_update = args_ ==
|
638
|
+
const bool is_initial_update = args_ == ChannelArgs();
|
581
639
|
// Update config.
|
582
640
|
auto old_config = std::move(config_);
|
583
641
|
config_ = std::move(args.config);
|
584
642
|
// Update args.
|
585
|
-
|
586
|
-
args_ = args.args;
|
587
|
-
args.args = nullptr;
|
643
|
+
args_ = std::move(args.args);
|
588
644
|
// Update child policy if needed.
|
589
|
-
|
645
|
+
absl::Status status;
|
646
|
+
if (child_policy_ != nullptr) status = UpdateChildPolicyLocked();
|
590
647
|
// Create endpoint watcher if needed.
|
591
648
|
if (is_initial_update) {
|
592
649
|
for (const auto& config : config_->discovery_mechanisms()) {
|
@@ -612,6 +669,7 @@ void XdsClusterResolverLb::UpdateLocked(UpdateArgs args) {
|
|
612
669
|
discovery_mechanism.discovery_mechanism->Start();
|
613
670
|
}
|
614
671
|
}
|
672
|
+
return status;
|
615
673
|
}
|
616
674
|
|
617
675
|
void XdsClusterResolverLb::ResetBackoffLocked() {
|
@@ -625,13 +683,14 @@ void XdsClusterResolverLb::ExitIdleLocked() {
|
|
625
683
|
}
|
626
684
|
|
627
685
|
void XdsClusterResolverLb::OnEndpointChanged(size_t index,
|
628
|
-
XdsEndpointResource update
|
686
|
+
XdsEndpointResource update,
|
687
|
+
std::string resolution_note) {
|
629
688
|
if (shutting_down_) return;
|
630
689
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_cluster_resolver_trace)) {
|
631
690
|
gpr_log(GPR_INFO,
|
632
691
|
"[xds_cluster_resolver_lb %p] Received update from xds client"
|
633
|
-
" for discovery mechanism %" PRIuPTR "",
|
634
|
-
this, index);
|
692
|
+
" for discovery mechanism %" PRIuPTR " (resolution_note=\"%s\")",
|
693
|
+
this, index, resolution_note.c_str());
|
635
694
|
}
|
636
695
|
DiscoveryMechanismEntry& discovery_entry = discovery_mechanisms_[index];
|
637
696
|
// We need at least one priority for each discovery mechanism, just so that we
|
@@ -704,6 +763,7 @@ void XdsClusterResolverLb::OnEndpointChanged(size_t index,
|
|
704
763
|
}
|
705
764
|
// Save update.
|
706
765
|
discovery_entry.latest_update = std::move(update);
|
766
|
+
discovery_entry.resolution_note = std::move(resolution_note);
|
707
767
|
discovery_entry.priority_child_numbers = std::move(priority_child_numbers);
|
708
768
|
// If any discovery mechanism has not received its first update,
|
709
769
|
// wait until that happens before creating the child policy.
|
@@ -718,30 +778,33 @@ void XdsClusterResolverLb::OnEndpointChanged(size_t index,
|
|
718
778
|
if (!mechanism.latest_update.has_value()) return;
|
719
779
|
}
|
720
780
|
// Update child policy.
|
721
|
-
|
781
|
+
// TODO(roth): If the child policy reports an error with the update,
|
782
|
+
// we need to propagate that error back to the resolver somehow.
|
783
|
+
(void)UpdateChildPolicyLocked();
|
722
784
|
}
|
723
785
|
|
724
|
-
void XdsClusterResolverLb::OnError(size_t index,
|
786
|
+
void XdsClusterResolverLb::OnError(size_t index, std::string resolution_note) {
|
725
787
|
gpr_log(GPR_ERROR,
|
726
788
|
"[xds_cluster_resolver_lb %p] discovery mechanism %" PRIuPTR
|
727
|
-
"
|
728
|
-
this, index,
|
789
|
+
" reported error: %s",
|
790
|
+
this, index, resolution_note.c_str());
|
729
791
|
if (shutting_down_) return;
|
730
792
|
if (!discovery_mechanisms_[index].latest_update.has_value()) {
|
731
|
-
// Call OnEndpointChanged with an empty update just like
|
732
|
-
// OnResourceDoesNotExist.
|
733
|
-
OnEndpointChanged(index, XdsEndpointResource());
|
793
|
+
// Call OnEndpointChanged() with an empty update just like
|
794
|
+
// OnResourceDoesNotExist().
|
795
|
+
OnEndpointChanged(index, XdsEndpointResource(), std::move(resolution_note));
|
734
796
|
}
|
735
797
|
}
|
736
798
|
|
737
|
-
void XdsClusterResolverLb::OnResourceDoesNotExist(size_t index
|
799
|
+
void XdsClusterResolverLb::OnResourceDoesNotExist(size_t index,
|
800
|
+
std::string resolution_note) {
|
738
801
|
gpr_log(GPR_ERROR,
|
739
802
|
"[xds_cluster_resolver_lb %p] discovery mechanism %" PRIuPTR
|
740
|
-
" resource does not exist",
|
741
|
-
this, index);
|
803
|
+
" resource does not exist: %s",
|
804
|
+
this, index, resolution_note.c_str());
|
742
805
|
if (shutting_down_) return;
|
743
|
-
// Call OnEndpointChanged with an empty update.
|
744
|
-
OnEndpointChanged(index, XdsEndpointResource());
|
806
|
+
// Call OnEndpointChanged() with an empty update.
|
807
|
+
OnEndpointChanged(index, XdsEndpointResource(), std::move(resolution_note));
|
745
808
|
}
|
746
809
|
|
747
810
|
//
|
@@ -790,6 +853,16 @@ ServerAddressList XdsClusterResolverLb::CreateChildPolicyAddressesLocked() {
|
|
790
853
|
return addresses;
|
791
854
|
}
|
792
855
|
|
856
|
+
std::string XdsClusterResolverLb::CreateChildPolicyResolutionNoteLocked() {
|
857
|
+
std::vector<absl::string_view> resolution_notes;
|
858
|
+
for (const auto& discovery_entry : discovery_mechanisms_) {
|
859
|
+
if (!discovery_entry.resolution_note.empty()) {
|
860
|
+
resolution_notes.push_back(discovery_entry.resolution_note);
|
861
|
+
}
|
862
|
+
}
|
863
|
+
return absl::StrJoin(resolution_notes, "; ");
|
864
|
+
}
|
865
|
+
|
793
866
|
RefCountedPtr<LoadBalancingPolicy::Config>
|
794
867
|
XdsClusterResolverLb::CreateChildPolicyConfigLocked() {
|
795
868
|
Json::Object priority_children;
|
@@ -885,10 +958,6 @@ XdsClusterResolverLb::CreateChildPolicyConfigLocked() {
|
|
885
958
|
if (discovery_entry.config().outlier_detection_lb_config.has_value()) {
|
886
959
|
outlier_detection_config =
|
887
960
|
discovery_entry.config().outlier_detection_lb_config.value();
|
888
|
-
} else {
|
889
|
-
// outlier detection will be a no-op
|
890
|
-
outlier_detection_config["interval"] =
|
891
|
-
Duration::Infinity().ToJsonString();
|
892
961
|
}
|
893
962
|
outlier_detection_config["childPolicy"] = Json::Array{Json::Object{
|
894
963
|
{"xds_cluster_impl_experimental",
|
@@ -930,17 +999,17 @@ XdsClusterResolverLb::CreateChildPolicyConfigLocked() {
|
|
930
999
|
"[xds_cluster_resolver_lb %p] generated config for child policy: %s",
|
931
1000
|
this, json_str.c_str());
|
932
1001
|
}
|
933
|
-
|
934
|
-
|
935
|
-
|
936
|
-
if (!
|
1002
|
+
auto config =
|
1003
|
+
CoreConfiguration::Get().lb_policy_registry().ParseLoadBalancingConfig(
|
1004
|
+
json);
|
1005
|
+
if (!config.ok()) {
|
937
1006
|
// This should never happen, but if it does, we basically have no
|
938
1007
|
// way to fix it, so we put the channel in TRANSIENT_FAILURE.
|
939
1008
|
gpr_log(GPR_ERROR,
|
940
1009
|
"[xds_cluster_resolver_lb %p] error parsing generated child policy "
|
941
1010
|
"config -- "
|
942
1011
|
"will put channel in TRANSIENT_FAILURE: %s",
|
943
|
-
this,
|
1012
|
+
this, config.status().ToString().c_str());
|
944
1013
|
absl::Status status = absl::InternalError(
|
945
1014
|
"xds_cluster_resolver LB policy: error parsing generated child policy "
|
946
1015
|
"config");
|
@@ -949,15 +1018,16 @@ XdsClusterResolverLb::CreateChildPolicyConfigLocked() {
|
|
949
1018
|
absl::make_unique<TransientFailurePicker>(status));
|
950
1019
|
return nullptr;
|
951
1020
|
}
|
952
|
-
return config;
|
1021
|
+
return std::move(*config);
|
953
1022
|
}
|
954
1023
|
|
955
|
-
|
956
|
-
if (shutting_down_) return;
|
1024
|
+
absl::Status XdsClusterResolverLb::UpdateChildPolicyLocked() {
|
1025
|
+
if (shutting_down_) return absl::OkStatus();
|
957
1026
|
UpdateArgs update_args;
|
958
1027
|
update_args.config = CreateChildPolicyConfigLocked();
|
959
|
-
if (update_args.config == nullptr) return;
|
1028
|
+
if (update_args.config == nullptr) return absl::OkStatus();
|
960
1029
|
update_args.addresses = CreateChildPolicyAddressesLocked();
|
1030
|
+
update_args.resolution_note = CreateChildPolicyResolutionNoteLocked();
|
961
1031
|
update_args.args = CreateChildPolicyArgsLocked(args_);
|
962
1032
|
if (child_policy_ == nullptr) {
|
963
1033
|
child_policy_ = CreateChildPolicyLocked(update_args.args);
|
@@ -966,29 +1036,25 @@ void XdsClusterResolverLb::UpdateChildPolicyLocked() {
|
|
966
1036
|
gpr_log(GPR_INFO, "[xds_cluster_resolver_lb %p] Updating child policy %p",
|
967
1037
|
this, child_policy_.get());
|
968
1038
|
}
|
969
|
-
child_policy_->UpdateLocked(std::move(update_args));
|
1039
|
+
return child_policy_->UpdateLocked(std::move(update_args));
|
970
1040
|
}
|
971
1041
|
|
972
|
-
|
973
|
-
const
|
974
|
-
|
975
|
-
|
976
|
-
|
977
|
-
grpc_channel_arg_integer_create(
|
978
|
-
const_cast<char*>(GRPC_ARG_INHIBIT_HEALTH_CHECKING), 1),
|
979
|
-
};
|
980
|
-
return grpc_channel_args_copy_and_add(args, new_args.data(), new_args.size());
|
1042
|
+
ChannelArgs XdsClusterResolverLb::CreateChildPolicyArgsLocked(
|
1043
|
+
const ChannelArgs& args) {
|
1044
|
+
// Inhibit client-side health checking, since the balancer does this
|
1045
|
+
// for us.
|
1046
|
+
return args.Set(GRPC_ARG_INHIBIT_HEALTH_CHECKING, 1);
|
981
1047
|
}
|
982
1048
|
|
983
1049
|
OrphanablePtr<LoadBalancingPolicy>
|
984
|
-
XdsClusterResolverLb::CreateChildPolicyLocked(const
|
1050
|
+
XdsClusterResolverLb::CreateChildPolicyLocked(const ChannelArgs& args) {
|
985
1051
|
LoadBalancingPolicy::Args lb_policy_args;
|
986
1052
|
lb_policy_args.work_serializer = work_serializer();
|
987
1053
|
lb_policy_args.args = args;
|
988
1054
|
lb_policy_args.channel_control_helper =
|
989
1055
|
absl::make_unique<Helper>(Ref(DEBUG_LOCATION, "Helper"));
|
990
1056
|
OrphanablePtr<LoadBalancingPolicy> lb_policy =
|
991
|
-
|
1057
|
+
CoreConfiguration::Get().lb_policy_registry().CreateLoadBalancingPolicy(
|
992
1058
|
"priority_experimental", std::move(lb_policy_args));
|
993
1059
|
if (GPR_UNLIKELY(lb_policy == nullptr)) {
|
994
1060
|
gpr_log(GPR_ERROR,
|
@@ -1012,225 +1078,158 @@ XdsClusterResolverLb::CreateChildPolicyLocked(const grpc_channel_args* args) {
|
|
1012
1078
|
// factory
|
1013
1079
|
//
|
1014
1080
|
|
1015
|
-
|
1016
|
-
|
1017
|
-
|
1018
|
-
|
1019
|
-
|
1020
|
-
|
1021
|
-
|
1022
|
-
|
1023
|
-
|
1024
|
-
|
1025
|
-
|
1081
|
+
const JsonLoaderInterface*
|
1082
|
+
XdsClusterResolverLbConfig::DiscoveryMechanism::JsonLoader(const JsonArgs&) {
|
1083
|
+
static const auto* loader =
|
1084
|
+
JsonObjectLoader<DiscoveryMechanism>()
|
1085
|
+
// Note: Several fields requires custom processing,
|
1086
|
+
// so they are handled in JsonPostLoad() instead.
|
1087
|
+
.Field("clusterName", &DiscoveryMechanism::cluster_name)
|
1088
|
+
.OptionalField("lrsLoadReportingServer",
|
1089
|
+
&DiscoveryMechanism::lrs_load_reporting_server)
|
1090
|
+
.OptionalField("max_concurrent_requests",
|
1091
|
+
&DiscoveryMechanism::max_concurrent_requests)
|
1092
|
+
.OptionalField("outlierDetection",
|
1093
|
+
&DiscoveryMechanism::outlier_detection_lb_config,
|
1094
|
+
"outlier_detection")
|
1095
|
+
.Finish();
|
1096
|
+
return loader;
|
1097
|
+
}
|
1098
|
+
|
1099
|
+
void XdsClusterResolverLbConfig::DiscoveryMechanism::JsonPostLoad(
|
1100
|
+
const Json& json, const JsonArgs& args, ValidationErrors* errors) {
|
1101
|
+
// Parse "type".
|
1102
|
+
{
|
1103
|
+
auto type_field = LoadJsonObjectField<std::string>(json.object_value(),
|
1104
|
+
args, "type", errors);
|
1105
|
+
if (type_field.has_value()) {
|
1106
|
+
if (*type_field == "EDS") {
|
1107
|
+
type = DiscoveryMechanismType::EDS;
|
1108
|
+
} else if (*type_field == "LOGICAL_DNS") {
|
1109
|
+
type = DiscoveryMechanismType::LOGICAL_DNS;
|
1110
|
+
} else {
|
1111
|
+
ValidationErrors::ScopedField field(errors, ".type");
|
1112
|
+
errors->AddError(absl::StrCat("unknown type \"", *type_field, "\""));
|
1113
|
+
}
|
1026
1114
|
}
|
1027
|
-
return MakeOrphanable<XdsClusterResolverChildHandler>(std::move(xds_client),
|
1028
|
-
std::move(args));
|
1029
1115
|
}
|
1116
|
+
// Parse "edsServiceName" if type is EDS.
|
1117
|
+
if (type == DiscoveryMechanismType::EDS) {
|
1118
|
+
auto value = LoadJsonObjectField<std::string>(json.object_value(), args,
|
1119
|
+
"edsServiceName", errors,
|
1120
|
+
/*required=*/false);
|
1121
|
+
if (value.has_value()) eds_service_name = std::move(*value);
|
1122
|
+
}
|
1123
|
+
// Parse "dnsHostname" if type is LOGICAL_DNS.
|
1124
|
+
if (type == DiscoveryMechanismType::LOGICAL_DNS) {
|
1125
|
+
auto value = LoadJsonObjectField<std::string>(json.object_value(), args,
|
1126
|
+
"dnsHostname", errors);
|
1127
|
+
if (value.has_value()) dns_hostname = std::move(*value);
|
1128
|
+
}
|
1129
|
+
}
|
1030
1130
|
|
1031
|
-
|
1131
|
+
const JsonLoaderInterface* XdsClusterResolverLbConfig::JsonLoader(
|
1132
|
+
const JsonArgs&) {
|
1133
|
+
static const auto* loader =
|
1134
|
+
JsonObjectLoader<XdsClusterResolverLbConfig>()
|
1135
|
+
// Note: The "xdsLbPolicy" field requires custom processing,
|
1136
|
+
// so it's handled in JsonPostLoad() instead.
|
1137
|
+
.Field("discoveryMechanisms",
|
1138
|
+
&XdsClusterResolverLbConfig::discovery_mechanisms_)
|
1139
|
+
.Finish();
|
1140
|
+
return loader;
|
1141
|
+
}
|
1032
1142
|
|
1033
|
-
|
1034
|
-
|
1035
|
-
|
1036
|
-
|
1037
|
-
|
1038
|
-
|
1039
|
-
|
1040
|
-
|
1041
|
-
"requires configuration. "
|
1042
|
-
"Please use loadBalancingConfig field of service config instead.");
|
1043
|
-
return nullptr;
|
1044
|
-
}
|
1045
|
-
std::vector<grpc_error_handle> error_list;
|
1046
|
-
std::vector<XdsClusterResolverLbConfig::DiscoveryMechanism>
|
1047
|
-
discovery_mechanisms;
|
1048
|
-
auto it = json.object_value().find("discoveryMechanisms");
|
1049
|
-
if (it == json.object_value().end()) {
|
1050
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1051
|
-
"field:discoveryMechanisms error:required field missing"));
|
1052
|
-
} else if (it->second.type() != Json::Type::ARRAY) {
|
1053
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1054
|
-
"field:discoveryMechanisms error:type should be array"));
|
1055
|
-
} else {
|
1056
|
-
const Json::Array& array = it->second.array_value();
|
1057
|
-
for (size_t i = 0; i < array.size(); ++i) {
|
1058
|
-
XdsClusterResolverLbConfig::DiscoveryMechanism discovery_mechanism;
|
1059
|
-
std::vector<grpc_error_handle> discovery_mechanism_errors =
|
1060
|
-
ParseDiscoveryMechanism(array[i], &discovery_mechanism);
|
1061
|
-
if (!discovery_mechanism_errors.empty()) {
|
1062
|
-
grpc_error_handle error = GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
1063
|
-
absl::StrCat("field:discovery_mechanism element: ", i, " error"));
|
1064
|
-
for (const grpc_error_handle& discovery_mechanism_error :
|
1065
|
-
discovery_mechanism_errors) {
|
1066
|
-
error = grpc_error_add_child(error, discovery_mechanism_error);
|
1067
|
-
}
|
1068
|
-
error_list.push_back(error);
|
1069
|
-
}
|
1070
|
-
discovery_mechanisms.emplace_back(std::move(discovery_mechanism));
|
1071
|
-
}
|
1072
|
-
}
|
1073
|
-
if (discovery_mechanisms.empty()) {
|
1074
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1075
|
-
"field:discovery_mechanism error:list is missing or empty"));
|
1143
|
+
void XdsClusterResolverLbConfig::JsonPostLoad(const Json& json,
|
1144
|
+
const JsonArgs& args,
|
1145
|
+
ValidationErrors* errors) {
|
1146
|
+
// Validate discoveryMechanisms.
|
1147
|
+
{
|
1148
|
+
ValidationErrors::ScopedField field(errors, ".discoveryMechanisms");
|
1149
|
+
if (!errors->FieldHasErrors() && discovery_mechanisms_.empty()) {
|
1150
|
+
errors->AddError("must be non-empty");
|
1076
1151
|
}
|
1077
|
-
|
1078
|
-
|
1079
|
-
|
1080
|
-
|
1152
|
+
}
|
1153
|
+
// Parse "xdsLbPolicy".
|
1154
|
+
{
|
1155
|
+
ValidationErrors::ScopedField field(errors, ".xdsLbPolicy");
|
1156
|
+
auto it = json.object_value().find("xdsLbPolicy");
|
1081
1157
|
if (it != json.object_value().end()) {
|
1082
1158
|
if (it->second.type() != Json::Type::ARRAY) {
|
1083
|
-
|
1084
|
-
"field:xdsLbPolicy error:type should be array"));
|
1159
|
+
errors->AddError("is not an array");
|
1085
1160
|
} else {
|
1086
1161
|
const Json::Array& array = it->second.array_value();
|
1087
1162
|
for (size_t i = 0; i < array.size(); ++i) {
|
1163
|
+
ValidationErrors::ScopedField field(errors,
|
1164
|
+
absl::StrCat("[", i, "]"));
|
1088
1165
|
if (array[i].type() != Json::Type::OBJECT) {
|
1089
|
-
|
1090
|
-
"field:xdsLbPolicy error:element should be of type object"));
|
1166
|
+
errors->AddError("is not an object");
|
1091
1167
|
continue;
|
1092
1168
|
}
|
1093
1169
|
const Json::Object& policy = array[i].object_value();
|
1094
1170
|
auto policy_it = policy.find("ROUND_ROBIN");
|
1095
1171
|
if (policy_it != policy.end()) {
|
1172
|
+
ValidationErrors::ScopedField field(errors, "[\"ROUND_ROBIN\"]");
|
1096
1173
|
if (policy_it->second.type() != Json::Type::OBJECT) {
|
1097
|
-
|
1098
|
-
"field:ROUND_ROBIN error:type should be object"));
|
1174
|
+
errors->AddError("is not an object");
|
1099
1175
|
}
|
1100
1176
|
break;
|
1101
1177
|
}
|
1102
|
-
|
1103
|
-
|
1104
|
-
|
1105
|
-
|
1106
|
-
|
1107
|
-
|
1108
|
-
|
1178
|
+
{
|
1179
|
+
ValidationErrors::ScopedField field(errors, "[\"RING_HASH\"]");
|
1180
|
+
policy_it = policy.find("RING_HASH");
|
1181
|
+
if (policy_it != policy.end()) {
|
1182
|
+
LoadFromJson<RingHashConfig>(policy_it->second, args, errors);
|
1183
|
+
xds_lb_policy_ = array[i];
|
1184
|
+
}
|
1109
1185
|
}
|
1110
1186
|
}
|
1111
1187
|
}
|
1112
1188
|
}
|
1113
|
-
|
1114
|
-
|
1115
|
-
|
1116
|
-
|
1117
|
-
|
1118
|
-
|
1119
|
-
|
1189
|
+
}
|
1190
|
+
}
|
1191
|
+
|
1192
|
+
class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory {
|
1193
|
+
public:
|
1194
|
+
OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
|
1195
|
+
LoadBalancingPolicy::Args args) const override {
|
1196
|
+
auto xds_client = args.args.GetObjectRef<GrpcXdsClient>(
|
1197
|
+
DEBUG_LOCATION, "XdsClusterResolverLbFactory");
|
1198
|
+
if (xds_client == nullptr) {
|
1199
|
+
gpr_log(GPR_ERROR,
|
1200
|
+
"XdsClient not present in channel args -- cannot instantiate "
|
1201
|
+
"xds_cluster_resolver LB policy");
|
1120
1202
|
return nullptr;
|
1121
1203
|
}
|
1204
|
+
return MakeOrphanable<XdsClusterResolverChildHandler>(std::move(xds_client),
|
1205
|
+
std::move(args));
|
1122
1206
|
}
|
1123
1207
|
|
1124
|
-
|
1125
|
-
|
1126
|
-
|
1127
|
-
|
1128
|
-
|
1129
|
-
|
1130
|
-
|
1131
|
-
|
1132
|
-
|
1133
|
-
|
1134
|
-
|
1135
|
-
auto it = json.object_value().find("clusterName");
|
1136
|
-
if (it == json.object_value().end()) {
|
1137
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1138
|
-
"field:clusterName error:required field missing"));
|
1139
|
-
} else if (it->second.type() != Json::Type::STRING) {
|
1140
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1141
|
-
"field:clusterName error:type should be string"));
|
1142
|
-
} else {
|
1143
|
-
discovery_mechanism->cluster_name = it->second.string_value();
|
1144
|
-
}
|
1145
|
-
// LRS load reporting server name.
|
1146
|
-
it = json.object_value().find("lrsLoadReportingServer");
|
1147
|
-
if (it != json.object_value().end()) {
|
1148
|
-
if (it->second.type() != Json::Type::OBJECT) {
|
1149
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1150
|
-
"field:lrsLoadReportingServer error:type should be object"));
|
1151
|
-
} else {
|
1152
|
-
grpc_error_handle parse_error;
|
1153
|
-
discovery_mechanism->lrs_load_reporting_server.emplace(
|
1154
|
-
XdsBootstrap::XdsServer::Parse(it->second, &parse_error));
|
1155
|
-
if (!GRPC_ERROR_IS_NONE(parse_error)) {
|
1156
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
1157
|
-
absl::StrCat("errors parsing lrs_load_reporting_server")));
|
1158
|
-
error_list.push_back(parse_error);
|
1159
|
-
}
|
1160
|
-
}
|
1161
|
-
}
|
1162
|
-
// Max concurrent requests.
|
1163
|
-
discovery_mechanism->max_concurrent_requests = 1024;
|
1164
|
-
it = json.object_value().find("max_concurrent_requests");
|
1165
|
-
if (it != json.object_value().end()) {
|
1166
|
-
if (it->second.type() != Json::Type::NUMBER) {
|
1167
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1168
|
-
"field:max_concurrent_requests error:must be of type number"));
|
1169
|
-
} else {
|
1170
|
-
discovery_mechanism->max_concurrent_requests =
|
1171
|
-
gpr_parse_nonnegative_int(it->second.string_value().c_str());
|
1172
|
-
}
|
1173
|
-
}
|
1174
|
-
if (XdsOutlierDetectionEnabled()) {
|
1175
|
-
it = json.object_value().find("outlierDetection");
|
1176
|
-
if (it != json.object_value().end()) {
|
1177
|
-
if (it->second.type() != Json::Type::OBJECT) {
|
1178
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1179
|
-
"field:outlierDetection error:type should be object"));
|
1180
|
-
} else {
|
1181
|
-
// No need to validate the contents of the outlier detection config,
|
1182
|
-
// because in this particular case, the JSON is generated by the CDS
|
1183
|
-
// policy instead of coming from service config, so it's not actually
|
1184
|
-
// any better to catch the problem here than it is to catch it in the
|
1185
|
-
// outlier_detection policy itself, so here we just act as a
|
1186
|
-
// pass-through.
|
1187
|
-
discovery_mechanism->outlier_detection_lb_config =
|
1188
|
-
it->second.object_value();
|
1189
|
-
}
|
1190
|
-
}
|
1208
|
+
absl::string_view name() const override { return kXdsClusterResolver; }
|
1209
|
+
|
1210
|
+
absl::StatusOr<RefCountedPtr<LoadBalancingPolicy::Config>>
|
1211
|
+
ParseLoadBalancingConfig(const Json& json) const override {
|
1212
|
+
if (json.type() == Json::Type::JSON_NULL) {
|
1213
|
+
// xds_cluster_resolver was mentioned as a policy in the deprecated
|
1214
|
+
// loadBalancingPolicy field or in the client API.
|
1215
|
+
return absl::InvalidArgumentError(
|
1216
|
+
"field:loadBalancingPolicy error:xds_cluster_resolver policy "
|
1217
|
+
"requires configuration. "
|
1218
|
+
"Please use loadBalancingConfig field of service config instead.");
|
1191
1219
|
}
|
1192
|
-
|
1193
|
-
|
1194
|
-
|
1195
|
-
|
1196
|
-
|
1197
|
-
} else if (it->second.type() != Json::Type::STRING) {
|
1198
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1199
|
-
"field:type error:type should be string"));
|
1200
|
-
} else {
|
1201
|
-
if (it->second.string_value() == "EDS") {
|
1202
|
-
discovery_mechanism->type = XdsClusterResolverLbConfig::
|
1203
|
-
DiscoveryMechanism::DiscoveryMechanismType::EDS;
|
1204
|
-
it = json.object_value().find("edsServiceName");
|
1205
|
-
if (it != json.object_value().end()) {
|
1206
|
-
if (it->second.type() != Json::Type::STRING) {
|
1207
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1208
|
-
"field:edsServiceName error:type should be string"));
|
1209
|
-
} else {
|
1210
|
-
discovery_mechanism->eds_service_name = it->second.string_value();
|
1211
|
-
}
|
1212
|
-
}
|
1213
|
-
} else if (it->second.string_value() == "LOGICAL_DNS") {
|
1214
|
-
discovery_mechanism->type = XdsClusterResolverLbConfig::
|
1215
|
-
DiscoveryMechanism::DiscoveryMechanismType::LOGICAL_DNS;
|
1216
|
-
it = json.object_value().find("dnsHostname");
|
1217
|
-
if (it == json.object_value().end()) {
|
1218
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1219
|
-
"field:dnsHostname error:required field missing"));
|
1220
|
-
} else if (it->second.type() != Json::Type::STRING) {
|
1221
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1222
|
-
"field:dnsHostname error:type should be string"));
|
1223
|
-
} else {
|
1224
|
-
discovery_mechanism->dns_hostname = it->second.string_value();
|
1225
|
-
}
|
1226
|
-
} else {
|
1227
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1228
|
-
"field:type error:invalid type"));
|
1220
|
+
class XdsJsonArgs : public JsonArgs {
|
1221
|
+
public:
|
1222
|
+
bool IsEnabled(absl::string_view key) const override {
|
1223
|
+
if (key == "outlier_detection") return XdsOutlierDetectionEnabled();
|
1224
|
+
return true;
|
1229
1225
|
}
|
1230
|
-
}
|
1231
|
-
return
|
1226
|
+
};
|
1227
|
+
return LoadRefCountedFromJson<XdsClusterResolverLbConfig>(
|
1228
|
+
json, XdsJsonArgs(),
|
1229
|
+
"errors validating xds_cluster_resolver LB policy config");
|
1232
1230
|
}
|
1233
1231
|
|
1232
|
+
private:
|
1234
1233
|
class XdsClusterResolverChildHandler : public ChildPolicyHandler {
|
1235
1234
|
public:
|
1236
1235
|
XdsClusterResolverChildHandler(RefCountedPtr<XdsClient> xds_client,
|
@@ -1239,6 +1238,10 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory {
|
|
1239
1238
|
&grpc_lb_xds_cluster_resolver_trace),
|
1240
1239
|
xds_client_(std::move(xds_client)) {}
|
1241
1240
|
|
1241
|
+
~XdsClusterResolverChildHandler() override {
|
1242
|
+
xds_client_.reset(DEBUG_LOCATION, "XdsClusterResolverChildHandler");
|
1243
|
+
}
|
1244
|
+
|
1242
1245
|
bool ConfigChangeRequiresNewPolicyInstance(
|
1243
1246
|
LoadBalancingPolicy::Config* old_config,
|
1244
1247
|
LoadBalancingPolicy::Config* new_config) const override {
|
@@ -1248,13 +1251,38 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory {
|
|
1248
1251
|
static_cast<XdsClusterResolverLbConfig*>(old_config);
|
1249
1252
|
XdsClusterResolverLbConfig* new_xds_cluster_resolver_config =
|
1250
1253
|
static_cast<XdsClusterResolverLbConfig*>(new_config);
|
1251
|
-
|
1252
|
-
|
1254
|
+
if (old_xds_cluster_resolver_config->discovery_mechanisms().size() !=
|
1255
|
+
new_xds_cluster_resolver_config->discovery_mechanisms().size()) {
|
1256
|
+
return true;
|
1257
|
+
}
|
1258
|
+
for (size_t i = 0;
|
1259
|
+
i < old_xds_cluster_resolver_config->discovery_mechanisms().size();
|
1260
|
+
++i) {
|
1261
|
+
auto& old_discovery_mechanism =
|
1262
|
+
old_xds_cluster_resolver_config->discovery_mechanisms()[i];
|
1263
|
+
auto& new_discovery_mechanism =
|
1264
|
+
new_xds_cluster_resolver_config->discovery_mechanisms()[i];
|
1265
|
+
if (old_discovery_mechanism.type != new_discovery_mechanism.type ||
|
1266
|
+
old_discovery_mechanism.cluster_name !=
|
1267
|
+
new_discovery_mechanism.cluster_name ||
|
1268
|
+
old_discovery_mechanism.eds_service_name !=
|
1269
|
+
new_discovery_mechanism.eds_service_name ||
|
1270
|
+
old_discovery_mechanism.dns_hostname !=
|
1271
|
+
new_discovery_mechanism.dns_hostname ||
|
1272
|
+
!(old_discovery_mechanism.lrs_load_reporting_server ==
|
1273
|
+
new_discovery_mechanism.lrs_load_reporting_server)) {
|
1274
|
+
return true;
|
1275
|
+
}
|
1276
|
+
}
|
1277
|
+
return false;
|
1253
1278
|
}
|
1254
1279
|
|
1255
1280
|
OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
|
1256
|
-
|
1257
|
-
|
1281
|
+
absl::string_view /*name*/,
|
1282
|
+
LoadBalancingPolicy::Args args) const override {
|
1283
|
+
return MakeOrphanable<XdsClusterResolverLb>(
|
1284
|
+
xds_client_->Ref(DEBUG_LOCATION, "XdsClusterResolverLb"),
|
1285
|
+
std::move(args));
|
1258
1286
|
}
|
1259
1287
|
|
1260
1288
|
private:
|
@@ -1264,16 +1292,9 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory {
|
|
1264
1292
|
|
1265
1293
|
} // namespace
|
1266
1294
|
|
1267
|
-
|
1268
|
-
|
1269
|
-
|
1270
|
-
// Plugin registration
|
1271
|
-
//
|
1272
|
-
|
1273
|
-
void grpc_lb_policy_xds_cluster_resolver_init() {
|
1274
|
-
grpc_core::LoadBalancingPolicyRegistry::Builder::
|
1275
|
-
RegisterLoadBalancingPolicyFactory(
|
1276
|
-
absl::make_unique<grpc_core::XdsClusterResolverLbFactory>());
|
1295
|
+
void RegisterXdsClusterResolverLbPolicy(CoreConfiguration::Builder* builder) {
|
1296
|
+
builder->lb_policy_registry()->RegisterLoadBalancingPolicyFactory(
|
1297
|
+
absl::make_unique<XdsClusterResolverLbFactory>());
|
1277
1298
|
}
|
1278
1299
|
|
1279
|
-
|
1300
|
+
} // namespace grpc_core
|