grpc 1.48.0 → 1.49.1
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 +104 -41
- data/include/grpc/event_engine/event_engine.h +19 -16
- data/include/grpc/impl/codegen/grpc_types.h +3 -8
- data/include/grpc/impl/codegen/port_platform.h +0 -8
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +3 -3
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +2 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +125 -200
- data/src/core/ext/filters/client_channel/client_channel.h +15 -8
- 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 +1 -1
- 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 +53 -65
- data/src/core/ext/filters/client_channel/http_proxy.h +12 -9
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +14 -12
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +6 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +102 -131
- 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.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +169 -63
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +25 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +15 -19
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +66 -78
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +44 -44
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +6 -5
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +65 -77
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +15 -14
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +19 -14
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +63 -67
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +40 -49
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +81 -97
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +53 -61
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +171 -102
- data/src/core/ext/filters/client_channel/proxy_mapper.h +13 -14
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +19 -16
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +8 -7
- 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 +170 -99
- 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 +17 -15
- 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 +38 -17
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +3 -4
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +5 -6
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -13
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +162 -165
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +37 -30
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +7 -10
- data/src/core/ext/filters/client_channel/retry_filter.cc +0 -7
- 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 +49 -89
- data/src/core/ext/filters/client_channel/subchannel.h +8 -8
- 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 +3 -4
- 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 +1 -3
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +1 -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 +2 -3
- 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/server/http_server_filter.cc +2 -3
- 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 +35 -62
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +62 -89
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +4 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +130 -165
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +3 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +67 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -0
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +7 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +25 -8
- 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 +2 -10
- data/src/core/ext/transport/chttp2/transport/internal.h +2 -1
- data/src/core/ext/transport/inproc/inproc_transport.cc +40 -74
- 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/upb_utils.h +0 -21
- data/src/core/ext/xds/xds_api.cc +53 -86
- data/src/core/ext/xds/xds_api.h +19 -28
- data/src/core/ext/xds/xds_bootstrap.cc +39 -52
- data/src/core/ext/xds/xds_bootstrap.h +28 -8
- 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 +555 -1214
- data/src/core/ext/xds/xds_client.h +16 -44
- data/src/core/ext/xds/xds_client_grpc.cc +291 -0
- data/src/core/ext/xds/xds_client_grpc.h +102 -0
- data/src/core/ext/xds/xds_cluster.cc +92 -103
- data/src/core/ext/xds/xds_cluster.h +6 -5
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +10 -14
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +1 -0
- data/src/core/ext/xds/xds_common_types.cc +134 -110
- data/src/core/ext/xds/xds_common_types.h +6 -7
- data/src/core/ext/xds/xds_endpoint.cc +80 -80
- data/src/core/ext/xds/xds_endpoint.h +4 -4
- 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 +17 -20
- data/src/core/ext/xds/xds_lb_policy_registry.h +4 -4
- data/src/core/ext/xds/xds_listener.cc +329 -299
- data/src/core/ext/xds/xds_listener.h +4 -4
- data/src/core/ext/xds/xds_resource_type.h +13 -2
- data/src/core/ext/xds/xds_route_config.cc +180 -177
- 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 +76 -81
- data/src/core/ext/xds/xds_transport.h +86 -0
- data/src/core/ext/xds/xds_transport_grpc.cc +349 -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/channel/call_tracer.h +1 -1
- data/src/core/lib/channel/channel_args.cc +88 -19
- data/src/core/lib/channel/channel_args.h +113 -62
- 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/channelz.cc +27 -37
- data/src/core/lib/channel/channelz.h +9 -0
- data/src/core/lib/channel/promise_based_filter.h +0 -1
- data/src/core/lib/config/core_configuration.h +48 -35
- data/src/core/lib/debug/stats.cc +12 -15
- data/src/core/lib/debug/stats.h +11 -3
- 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 +54 -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 +46 -10
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_manager.h +17 -8
- data/src/core/lib/event_engine/promise.h +11 -2
- data/src/core/lib/event_engine/socket_notifier.h +55 -0
- data/src/core/lib/event_engine/{iomgr_engine/thread_pool.cc → thread_pool.cc} +49 -14
- data/src/core/lib/event_engine/{iomgr_engine/thread_pool.h → thread_pool.h} +21 -10
- data/src/core/lib/event_engine/utils.cc +49 -0
- data/src/core/lib/event_engine/utils.h +40 -0
- data/src/core/lib/event_engine/windows/iocp.cc +149 -0
- data/src/core/lib/event_engine/windows/iocp.h +68 -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/gpr/time.cc +11 -9
- data/src/core/lib/gpr/useful.h +29 -0
- data/src/core/lib/gprpp/bitset.h +3 -13
- data/src/core/lib/gprpp/debug_location.h +39 -7
- 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/ref_counted_ptr.h +0 -1
- data/src/core/lib/gprpp/status_helper.cc +1 -0
- data/src/core/lib/gprpp/table.h +0 -1
- 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/{iomgr → gprpp}/work_serializer.cc +34 -18
- data/src/core/lib/{iomgr → gprpp}/work_serializer.h +21 -27
- 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 -26
- data/src/core/lib/iomgr/closure.h +0 -9
- data/src/core/lib/iomgr/combiner.cc +0 -20
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
- 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_poll_posix.cc +17 -9
- data/src/core/lib/iomgr/exec_ctx.cc +0 -12
- data/src/core/lib/iomgr/executor.cc +0 -10
- data/src/core/lib/iomgr/executor.h +0 -3
- data/src/core/lib/iomgr/lockfree_event.cc +0 -17
- data/src/core/lib/iomgr/port.h +3 -0
- data/src/core/lib/iomgr/resolve_address.h +29 -6
- data/src/core/lib/iomgr/resolve_address_posix.cc +42 -8
- data/src/core/lib/iomgr/resolve_address_posix.h +19 -5
- data/src/core/lib/iomgr/resolve_address_windows.cc +44 -10
- data/src/core/lib/iomgr/resolve_address_windows.h +19 -5
- data/src/core/lib/iomgr/socket_windows.h +0 -2
- data/src/core/lib/iomgr/tcp_posix.cc +118 -6
- data/src/core/lib/iomgr/timer_generic.cc +6 -8
- 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 +233 -0
- data/src/core/lib/json/json_object_loader.h +618 -0
- data/src/core/lib/json/json_reader.cc +86 -62
- data/src/core/lib/json/json_util.cc +8 -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 +15 -24
- data/src/core/lib/load_balancing/lb_policy_factory.h +49 -0
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy_registry.cc +49 -72
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy_registry.h +27 -27
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/subchannel_interface.h +6 -6
- data/src/core/lib/promise/activity.h +56 -8
- data/src/core/lib/promise/arena_promise.h +84 -81
- data/src/core/lib/promise/context.h +0 -1
- 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 +38 -42
- data/src/core/lib/promise/sleep.h +27 -24
- 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 +2 -12
- 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 +1 -1
- data/src/core/lib/resource_quota/arena.cc +21 -1
- data/src/core/lib/resource_quota/arena.h +24 -2
- data/src/core/lib/resource_quota/memory_quota.cc +157 -17
- data/src/core/lib/resource_quota/memory_quota.h +98 -17
- data/src/core/lib/resource_quota/periodic_update.cc +79 -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/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/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 +18 -11
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +32 -23
- 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/google_default_credentials.cc +29 -26
- 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 +11 -13
- 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 +17 -18
- 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.h +6 -0
- 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/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 +3 -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 +8 -2
- data/src/core/lib/surface/channel.cc +6 -6
- data/src/core/lib/surface/channel.h +1 -1
- data/src/core/lib/surface/completion_queue.cc +0 -2
- data/src/core/lib/surface/completion_queue.h +0 -3
- data/src/core/lib/surface/init.cc +2 -6
- 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 +7 -12
- data/src/core/lib/surface/server.h +7 -7
- data/src/core/lib/surface/validate_metadata.cc +4 -14
- data/src/core/lib/surface/version.cc +2 -2
- 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 +5 -0
- data/src/core/lib/transport/metadata_batch.h +52 -7
- data/src/core/lib/transport/parsed_metadata.h +0 -1
- data/src/core/lib/transport/tcp_connect_handshaker.cc +12 -18
- data/src/core/lib/transport/transport.h +0 -7
- 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/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 +88 -36
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -50
- 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/promise/detail/switch.h +0 -1455
@@ -32,23 +32,20 @@
|
|
32
32
|
#include "absl/status/status.h"
|
33
33
|
#include "absl/status/statusor.h"
|
34
34
|
#include "absl/strings/str_cat.h"
|
35
|
+
#include "absl/strings/str_join.h"
|
35
36
|
#include "absl/strings/string_view.h"
|
36
37
|
#include "absl/types/optional.h"
|
37
38
|
#include "absl/types/variant.h"
|
38
39
|
|
39
40
|
#include <grpc/impl/codegen/connectivity_state.h>
|
40
|
-
#include <grpc/impl/codegen/grpc_types.h>
|
41
41
|
#include <grpc/support/log.h>
|
42
42
|
|
43
|
-
#include "src/core/ext/filters/client_channel/lb_policy.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/xds/xds.h"
|
46
45
|
#include "src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h"
|
47
|
-
#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
|
48
|
-
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
|
49
|
-
#include "src/core/ext/filters/client_channel/subchannel_interface.h"
|
50
46
|
#include "src/core/ext/xds/xds_bootstrap.h"
|
51
47
|
#include "src/core/ext/xds/xds_client.h"
|
48
|
+
#include "src/core/ext/xds/xds_client_grpc.h"
|
52
49
|
#include "src/core/ext/xds/xds_client_stats.h"
|
53
50
|
#include "src/core/ext/xds/xds_endpoint.h"
|
54
51
|
#include "src/core/lib/channel/channel_args.h"
|
@@ -62,6 +59,10 @@
|
|
62
59
|
#include "src/core/lib/iomgr/error.h"
|
63
60
|
#include "src/core/lib/iomgr/pollset_set.h"
|
64
61
|
#include "src/core/lib/json/json.h"
|
62
|
+
#include "src/core/lib/load_balancing/lb_policy.h"
|
63
|
+
#include "src/core/lib/load_balancing/lb_policy_factory.h"
|
64
|
+
#include "src/core/lib/load_balancing/lb_policy_registry.h"
|
65
|
+
#include "src/core/lib/load_balancing/subchannel_interface.h"
|
65
66
|
#include "src/core/lib/resolver/server_address.h"
|
66
67
|
#include "src/core/lib/transport/connectivity_state.h"
|
67
68
|
|
@@ -137,7 +138,7 @@ CircuitBreakerCallCounterMap::CallCounter::~CallCounter() {
|
|
137
138
|
// LB policy
|
138
139
|
//
|
139
140
|
|
140
|
-
constexpr
|
141
|
+
constexpr absl::string_view kXdsClusterImpl = "xds_cluster_impl_experimental";
|
141
142
|
|
142
143
|
// Config for xDS Cluster Impl LB policy.
|
143
144
|
class XdsClusterImplLbConfig : public LoadBalancingPolicy::Config {
|
@@ -155,7 +156,7 @@ class XdsClusterImplLbConfig : public LoadBalancingPolicy::Config {
|
|
155
156
|
max_concurrent_requests_(max_concurrent_requests),
|
156
157
|
drop_config_(std::move(drop_config)) {}
|
157
158
|
|
158
|
-
|
159
|
+
absl::string_view name() const override { return kXdsClusterImpl; }
|
159
160
|
|
160
161
|
RefCountedPtr<LoadBalancingPolicy::Config> child_policy() const {
|
161
162
|
return child_policy_;
|
@@ -185,7 +186,7 @@ class XdsClusterImplLb : public LoadBalancingPolicy {
|
|
185
186
|
public:
|
186
187
|
XdsClusterImplLb(RefCountedPtr<XdsClient> xds_client, Args args);
|
187
188
|
|
188
|
-
|
189
|
+
absl::string_view name() const override { return kXdsClusterImpl; }
|
189
190
|
|
190
191
|
void UpdateLocked(UpdateArgs args) override;
|
191
192
|
void ExitIdleLocked() override;
|
@@ -247,7 +248,7 @@ class XdsClusterImplLb : public LoadBalancingPolicy {
|
|
247
248
|
}
|
248
249
|
|
249
250
|
RefCountedPtr<SubchannelInterface> CreateSubchannel(
|
250
|
-
ServerAddress address, const
|
251
|
+
ServerAddress address, const ChannelArgs& args) override;
|
251
252
|
void UpdateState(grpc_connectivity_state state, const absl::Status& status,
|
252
253
|
std::unique_ptr<SubchannelPicker> picker) override;
|
253
254
|
void RequestReresolution() override;
|
@@ -264,9 +265,10 @@ class XdsClusterImplLb : public LoadBalancingPolicy {
|
|
264
265
|
void ShutdownLocked() override;
|
265
266
|
|
266
267
|
OrphanablePtr<LoadBalancingPolicy> CreateChildPolicyLocked(
|
267
|
-
const
|
268
|
+
const ChannelArgs& args);
|
268
269
|
void UpdateChildPolicyLocked(absl::StatusOr<ServerAddressList> addresses,
|
269
|
-
|
270
|
+
std::string resolution_note,
|
271
|
+
const ChannelArgs& args);
|
270
272
|
|
271
273
|
void MaybeUpdatePickerLocked();
|
272
274
|
|
@@ -465,7 +467,7 @@ void XdsClusterImplLb::ShutdownLocked() {
|
|
465
467
|
// the child.
|
466
468
|
picker_.reset();
|
467
469
|
drop_stats_.reset();
|
468
|
-
xds_client_.reset();
|
470
|
+
xds_client_.reset(DEBUG_LOCATION, "XdsClusterImpl");
|
469
471
|
}
|
470
472
|
|
471
473
|
void XdsClusterImplLb::ExitIdleLocked() {
|
@@ -519,7 +521,8 @@ void XdsClusterImplLb::UpdateLocked(UpdateArgs args) {
|
|
519
521
|
MaybeUpdatePickerLocked();
|
520
522
|
}
|
521
523
|
// Update child policy.
|
522
|
-
UpdateChildPolicyLocked(std::move(args.addresses),
|
524
|
+
UpdateChildPolicyLocked(std::move(args.addresses),
|
525
|
+
std::move(args.resolution_note), args.args);
|
523
526
|
}
|
524
527
|
|
525
528
|
void XdsClusterImplLb::MaybeUpdatePickerLocked() {
|
@@ -553,7 +556,7 @@ void XdsClusterImplLb::MaybeUpdatePickerLocked() {
|
|
553
556
|
}
|
554
557
|
|
555
558
|
OrphanablePtr<LoadBalancingPolicy> XdsClusterImplLb::CreateChildPolicyLocked(
|
556
|
-
const
|
559
|
+
const ChannelArgs& args) {
|
557
560
|
LoadBalancingPolicy::Args lb_policy_args;
|
558
561
|
lb_policy_args.work_serializer = work_serializer();
|
559
562
|
lb_policy_args.args = args;
|
@@ -576,8 +579,8 @@ OrphanablePtr<LoadBalancingPolicy> XdsClusterImplLb::CreateChildPolicyLocked(
|
|
576
579
|
}
|
577
580
|
|
578
581
|
void XdsClusterImplLb::UpdateChildPolicyLocked(
|
579
|
-
absl::StatusOr<ServerAddressList> addresses,
|
580
|
-
const
|
582
|
+
absl::StatusOr<ServerAddressList> addresses, std::string resolution_note,
|
583
|
+
const ChannelArgs& args) {
|
581
584
|
// Create policy if needed.
|
582
585
|
if (child_policy_ == nullptr) {
|
583
586
|
child_policy_ = CreateChildPolicyLocked(args);
|
@@ -585,11 +588,10 @@ void XdsClusterImplLb::UpdateChildPolicyLocked(
|
|
585
588
|
// Construct update args.
|
586
589
|
UpdateArgs update_args;
|
587
590
|
update_args.addresses = std::move(addresses);
|
591
|
+
update_args.resolution_note = std::move(resolution_note);
|
588
592
|
update_args.config = config_->child_policy();
|
589
|
-
|
590
|
-
|
591
|
-
const_cast<char*>(config_->cluster_name().c_str()));
|
592
|
-
update_args.args = grpc_channel_args_copy_and_add(args, &cluster_arg, 1);
|
593
|
+
update_args.args =
|
594
|
+
args.Set(GRPC_ARG_XDS_CLUSTER_NAME, config_->cluster_name());
|
593
595
|
// Update the policy.
|
594
596
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_cluster_impl_lb_trace)) {
|
595
597
|
gpr_log(GPR_INFO,
|
@@ -604,7 +606,7 @@ void XdsClusterImplLb::UpdateChildPolicyLocked(
|
|
604
606
|
//
|
605
607
|
|
606
608
|
RefCountedPtr<SubchannelInterface> XdsClusterImplLb::Helper::CreateSubchannel(
|
607
|
-
ServerAddress address, const
|
609
|
+
ServerAddress address, const ChannelArgs& args) {
|
608
610
|
if (xds_cluster_impl_policy_->shutting_down_) return nullptr;
|
609
611
|
// If load reporting is enabled, wrap the subchannel such that it
|
610
612
|
// includes the locality stats object, which will be used by the EdsPicker.
|
@@ -690,8 +692,8 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
690
692
|
public:
|
691
693
|
OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
|
692
694
|
LoadBalancingPolicy::Args args) const override {
|
693
|
-
|
694
|
-
|
695
|
+
auto xds_client = args.args.GetObjectRef<GrpcXdsClient>(DEBUG_LOCATION,
|
696
|
+
"XdsClusterImplLb");
|
695
697
|
if (xds_client == nullptr) {
|
696
698
|
gpr_log(GPR_ERROR,
|
697
699
|
"XdsClient not present in channel args -- cannot instantiate "
|
@@ -702,48 +704,41 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
702
704
|
std::move(args));
|
703
705
|
}
|
704
706
|
|
705
|
-
|
707
|
+
absl::string_view name() const override { return kXdsClusterImpl; }
|
706
708
|
|
707
|
-
RefCountedPtr<LoadBalancingPolicy::Config
|
708
|
-
|
709
|
-
GPR_DEBUG_ASSERT(error != nullptr && GRPC_ERROR_IS_NONE(*error));
|
709
|
+
absl::StatusOr<RefCountedPtr<LoadBalancingPolicy::Config>>
|
710
|
+
ParseLoadBalancingConfig(const Json& json) const override {
|
710
711
|
if (json.type() == Json::Type::JSON_NULL) {
|
711
712
|
// This policy was configured in the deprecated loadBalancingPolicy
|
712
713
|
// field or in the client API.
|
713
|
-
|
714
|
+
return absl::InvalidArgumentError(
|
714
715
|
"field:loadBalancingPolicy error:xds_cluster_impl policy requires "
|
715
716
|
"configuration. Please use loadBalancingConfig field of service "
|
716
717
|
"config instead.");
|
717
|
-
return nullptr;
|
718
718
|
}
|
719
|
-
std::vector<
|
719
|
+
std::vector<std::string> errors;
|
720
720
|
// Child policy.
|
721
721
|
RefCountedPtr<LoadBalancingPolicy::Config> child_policy;
|
722
722
|
auto it = json.object_value().find("childPolicy");
|
723
723
|
if (it == json.object_value().end()) {
|
724
|
-
|
725
|
-
"field:childPolicy error:required field missing"));
|
724
|
+
errors.emplace_back("field:childPolicy error:required field missing");
|
726
725
|
} else {
|
727
|
-
|
728
|
-
|
729
|
-
|
730
|
-
|
731
|
-
|
732
|
-
|
733
|
-
|
734
|
-
error_list.push_back(
|
735
|
-
GRPC_ERROR_CREATE_FROM_VECTOR("field:childPolicy", &child_errors));
|
726
|
+
auto config =
|
727
|
+
LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(it->second);
|
728
|
+
if (!config.ok()) {
|
729
|
+
errors.emplace_back(absl::StrCat("field:childPolicy error:",
|
730
|
+
config.status().message()));
|
731
|
+
} else {
|
732
|
+
child_policy = std::move(*config);
|
736
733
|
}
|
737
734
|
}
|
738
735
|
// Cluster name.
|
739
736
|
std::string cluster_name;
|
740
737
|
it = json.object_value().find("clusterName");
|
741
738
|
if (it == json.object_value().end()) {
|
742
|
-
|
743
|
-
"field:clusterName error:required field missing"));
|
739
|
+
errors.emplace_back("field:clusterName error:required field missing");
|
744
740
|
} else if (it->second.type() != Json::Type::STRING) {
|
745
|
-
|
746
|
-
"field:clusterName error:type should be string"));
|
741
|
+
errors.emplace_back("field:clusterName error:type should be string");
|
747
742
|
} else {
|
748
743
|
cluster_name = it->second.string_value();
|
749
744
|
}
|
@@ -752,8 +747,7 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
752
747
|
it = json.object_value().find("edsServiceName");
|
753
748
|
if (it != json.object_value().end()) {
|
754
749
|
if (it->second.type() != Json::Type::STRING) {
|
755
|
-
|
756
|
-
"field:edsServiceName error:type should be string"));
|
750
|
+
errors.emplace_back("field:edsServiceName error:type should be string");
|
757
751
|
} else {
|
758
752
|
eds_service_name = it->second.string_value();
|
759
753
|
}
|
@@ -763,16 +757,17 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
763
757
|
it = json.object_value().find("lrsLoadReportingServer");
|
764
758
|
if (it != json.object_value().end()) {
|
765
759
|
if (it->second.type() != Json::Type::OBJECT) {
|
766
|
-
|
767
|
-
"field:lrsLoadReportingServer error:type should be object")
|
760
|
+
errors.emplace_back(
|
761
|
+
"field:lrsLoadReportingServer error:type should be object");
|
768
762
|
} else {
|
769
763
|
grpc_error_handle parser_error;
|
770
764
|
lrs_load_reporting_server = XdsBootstrap::XdsServer::Parse(
|
771
765
|
it->second.object_value(), &parser_error);
|
772
766
|
if (!GRPC_ERROR_IS_NONE(parser_error)) {
|
773
|
-
|
774
|
-
absl::StrCat("
|
775
|
-
|
767
|
+
errors.emplace_back(
|
768
|
+
absl::StrCat("error parsing lrs_load_reporting_server: ",
|
769
|
+
grpc_error_std_string(parser_error)));
|
770
|
+
GRPC_ERROR_UNREF(parser_error);
|
776
771
|
}
|
777
772
|
}
|
778
773
|
}
|
@@ -781,8 +776,8 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
781
776
|
it = json.object_value().find("maxConcurrentRequests");
|
782
777
|
if (it != json.object_value().end()) {
|
783
778
|
if (it->second.type() != Json::Type::NUMBER) {
|
784
|
-
|
785
|
-
"field:max_concurrent_requests error:must be of type number")
|
779
|
+
errors.emplace_back(
|
780
|
+
"field:max_concurrent_requests error:must be of type number");
|
786
781
|
} else {
|
787
782
|
max_concurrent_requests =
|
788
783
|
gpr_parse_nonnegative_int(it->second.string_value().c_str());
|
@@ -792,20 +787,15 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
792
787
|
auto drop_config = MakeRefCounted<XdsEndpointResource::DropConfig>();
|
793
788
|
it = json.object_value().find("dropCategories");
|
794
789
|
if (it == json.object_value().end()) {
|
795
|
-
|
796
|
-
"field:dropCategories error:required field missing"));
|
790
|
+
errors.emplace_back("field:dropCategories error:required field missing");
|
797
791
|
} else {
|
798
|
-
|
799
|
-
|
800
|
-
if (!child_errors.empty()) {
|
801
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_VECTOR(
|
802
|
-
"field:dropCategories", &child_errors));
|
803
|
-
}
|
792
|
+
absl::Status status = ParseDropCategories(it->second, drop_config.get());
|
793
|
+
if (!status.ok()) errors.emplace_back(status.message());
|
804
794
|
}
|
805
|
-
if (!
|
806
|
-
|
807
|
-
"xds_cluster_impl_experimental LB policy config",
|
808
|
-
|
795
|
+
if (!errors.empty()) {
|
796
|
+
return absl::InvalidArgumentError(absl::StrCat(
|
797
|
+
"errors parseing xds_cluster_impl_experimental LB policy config: [",
|
798
|
+
absl::StrJoin(errors, "; "), "]"));
|
809
799
|
}
|
810
800
|
return MakeRefCounted<XdsClusterImplLbConfig>(
|
811
801
|
std::move(child_policy), std::move(cluster_name),
|
@@ -814,65 +804,59 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
814
804
|
}
|
815
805
|
|
816
806
|
private:
|
817
|
-
static
|
807
|
+
static absl::Status ParseDropCategories(
|
818
808
|
const Json& json, XdsEndpointResource::DropConfig* drop_config) {
|
819
|
-
std::vector<grpc_error_handle> error_list;
|
820
809
|
if (json.type() != Json::Type::ARRAY) {
|
821
|
-
|
822
|
-
"dropCategories field is not an array"));
|
823
|
-
return error_list;
|
810
|
+
return absl::InvalidArgumentError("dropCategories field is not an array");
|
824
811
|
}
|
812
|
+
std::vector<std::string> errors;
|
825
813
|
for (size_t i = 0; i < json.array_value().size(); ++i) {
|
826
814
|
const Json& entry = json.array_value()[i];
|
827
|
-
|
828
|
-
|
829
|
-
|
830
|
-
|
831
|
-
absl::StrCat("errors parsing index ", i));
|
832
|
-
for (size_t i = 0; i < child_errors.size(); ++i) {
|
833
|
-
error = grpc_error_add_child(error, child_errors[i]);
|
834
|
-
}
|
835
|
-
error_list.push_back(error);
|
815
|
+
absl::Status status = ParseDropCategory(entry, drop_config);
|
816
|
+
if (!status.ok()) {
|
817
|
+
errors.emplace_back(
|
818
|
+
absl::StrCat("error parsing index ", i, ": ", status.message()));
|
836
819
|
}
|
837
820
|
}
|
838
|
-
|
821
|
+
if (!errors.empty()) {
|
822
|
+
return absl::InvalidArgumentError(
|
823
|
+
absl::StrCat("errors parsing dropCategories field: [",
|
824
|
+
absl::StrJoin(errors, "; "), "]"));
|
825
|
+
}
|
826
|
+
return absl::OkStatus();
|
839
827
|
}
|
840
828
|
|
841
|
-
static
|
829
|
+
static absl::Status ParseDropCategory(
|
842
830
|
const Json& json, XdsEndpointResource::DropConfig* drop_config) {
|
843
|
-
std::vector<grpc_error_handle> error_list;
|
844
831
|
if (json.type() != Json::Type::OBJECT) {
|
845
|
-
|
846
|
-
"dropCategories entry is not an object")
|
847
|
-
return error_list;
|
832
|
+
return absl::InvalidArgumentError(
|
833
|
+
"dropCategories entry is not an object");
|
848
834
|
}
|
835
|
+
std::vector<std::string> errors;
|
849
836
|
std::string category;
|
850
837
|
auto it = json.object_value().find("category");
|
851
838
|
if (it == json.object_value().end()) {
|
852
|
-
|
853
|
-
"\"category\" field not present"));
|
839
|
+
errors.emplace_back("\"category\" field not present");
|
854
840
|
} else if (it->second.type() != Json::Type::STRING) {
|
855
|
-
|
856
|
-
"\"category\" field is not a string"));
|
841
|
+
errors.emplace_back("\"category\" field is not a string");
|
857
842
|
} else {
|
858
843
|
category = it->second.string_value();
|
859
844
|
}
|
860
845
|
uint32_t requests_per_million = 0;
|
861
846
|
it = json.object_value().find("requests_per_million");
|
862
847
|
if (it == json.object_value().end()) {
|
863
|
-
|
864
|
-
"\"requests_per_million\" field is not present"));
|
848
|
+
errors.emplace_back("\"requests_per_million\" field is not present");
|
865
849
|
} else if (it->second.type() != Json::Type::NUMBER) {
|
866
|
-
|
867
|
-
"\"requests_per_million\" field is not a number"));
|
850
|
+
errors.emplace_back("\"requests_per_million\" field is not a number");
|
868
851
|
} else {
|
869
852
|
requests_per_million =
|
870
853
|
gpr_parse_nonnegative_int(it->second.string_value().c_str());
|
871
854
|
}
|
872
|
-
if (
|
873
|
-
|
855
|
+
if (!errors.empty()) {
|
856
|
+
return absl::InvalidArgumentError(absl::StrJoin(errors, "; "));
|
874
857
|
}
|
875
|
-
|
858
|
+
drop_config->AddCategory(std::move(category), requests_per_million);
|
859
|
+
return absl::OkStatus();
|
876
860
|
}
|
877
861
|
};
|
878
862
|
|
@@ -30,19 +30,15 @@
|
|
30
30
|
#include "absl/status/status.h"
|
31
31
|
#include "absl/status/statusor.h"
|
32
32
|
#include "absl/strings/str_cat.h"
|
33
|
+
#include "absl/strings/str_join.h"
|
33
34
|
#include "absl/strings/string_view.h"
|
34
35
|
|
35
36
|
#include <grpc/impl/codegen/connectivity_state.h>
|
36
|
-
#include <grpc/impl/codegen/grpc_types.h>
|
37
37
|
#include <grpc/support/log.h>
|
38
38
|
|
39
39
|
#include "src/core/ext/filters/client_channel/client_channel.h"
|
40
|
-
#include "src/core/ext/filters/client_channel/lb_policy.h"
|
41
40
|
#include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
|
42
|
-
#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
|
43
|
-
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
|
44
41
|
#include "src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h"
|
45
|
-
#include "src/core/ext/filters/client_channel/subchannel_interface.h"
|
46
42
|
#include "src/core/lib/channel/channel_args.h"
|
47
43
|
#include "src/core/lib/debug/trace.h"
|
48
44
|
#include "src/core/lib/gprpp/debug_location.h"
|
@@ -50,13 +46,17 @@
|
|
50
46
|
#include "src/core/lib/gprpp/ref_counted.h"
|
51
47
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
52
48
|
#include "src/core/lib/gprpp/time.h"
|
49
|
+
#include "src/core/lib/gprpp/work_serializer.h"
|
53
50
|
#include "src/core/lib/iomgr/closure.h"
|
54
51
|
#include "src/core/lib/iomgr/error.h"
|
55
52
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
56
53
|
#include "src/core/lib/iomgr/pollset_set.h"
|
57
54
|
#include "src/core/lib/iomgr/timer.h"
|
58
|
-
#include "src/core/lib/iomgr/work_serializer.h"
|
59
55
|
#include "src/core/lib/json/json.h"
|
56
|
+
#include "src/core/lib/load_balancing/lb_policy.h"
|
57
|
+
#include "src/core/lib/load_balancing/lb_policy_factory.h"
|
58
|
+
#include "src/core/lib/load_balancing/lb_policy_registry.h"
|
59
|
+
#include "src/core/lib/load_balancing/subchannel_interface.h"
|
60
60
|
#include "src/core/lib/resolver/server_address.h"
|
61
61
|
#include "src/core/lib/transport/connectivity_state.h"
|
62
62
|
|
@@ -68,7 +68,8 @@ TraceFlag grpc_xds_cluster_manager_lb_trace(false, "xds_cluster_manager_lb");
|
|
68
68
|
|
69
69
|
namespace {
|
70
70
|
|
71
|
-
constexpr
|
71
|
+
constexpr absl::string_view kXdsClusterManager =
|
72
|
+
"xds_cluster_manager_experimental";
|
72
73
|
|
73
74
|
// Config for xds_cluster_manager LB policy.
|
74
75
|
class XdsClusterManagerLbConfig : public LoadBalancingPolicy::Config {
|
@@ -79,7 +80,7 @@ class XdsClusterManagerLbConfig : public LoadBalancingPolicy::Config {
|
|
79
80
|
explicit XdsClusterManagerLbConfig(ClusterMap cluster_map)
|
80
81
|
: cluster_map_(std::move(cluster_map)) {}
|
81
82
|
|
82
|
-
|
83
|
+
absl::string_view name() const override { return kXdsClusterManager; }
|
83
84
|
|
84
85
|
const ClusterMap& cluster_map() const { return cluster_map_; }
|
85
86
|
|
@@ -92,7 +93,7 @@ class XdsClusterManagerLb : public LoadBalancingPolicy {
|
|
92
93
|
public:
|
93
94
|
explicit XdsClusterManagerLb(Args args);
|
94
95
|
|
95
|
-
|
96
|
+
absl::string_view name() const override { return kXdsClusterManager; }
|
96
97
|
|
97
98
|
void UpdateLocked(UpdateArgs args) override;
|
98
99
|
void ExitIdleLocked() override;
|
@@ -144,7 +145,7 @@ class XdsClusterManagerLb : public LoadBalancingPolicy {
|
|
144
145
|
|
145
146
|
void UpdateLocked(RefCountedPtr<LoadBalancingPolicy::Config> config,
|
146
147
|
const absl::StatusOr<ServerAddressList>& addresses,
|
147
|
-
const
|
148
|
+
const ChannelArgs& args);
|
148
149
|
void ExitIdleLocked();
|
149
150
|
void ResetBackoffLocked();
|
150
151
|
void DeactivateLocked();
|
@@ -167,7 +168,7 @@ class XdsClusterManagerLb : public LoadBalancingPolicy {
|
|
167
168
|
}
|
168
169
|
|
169
170
|
RefCountedPtr<SubchannelInterface> CreateSubchannel(
|
170
|
-
ServerAddress address, const
|
171
|
+
ServerAddress address, const ChannelArgs& args) override;
|
171
172
|
void UpdateState(grpc_connectivity_state state,
|
172
173
|
const absl::Status& status,
|
173
174
|
std::unique_ptr<SubchannelPicker> picker) override;
|
@@ -182,7 +183,7 @@ class XdsClusterManagerLb : public LoadBalancingPolicy {
|
|
182
183
|
|
183
184
|
// Methods for dealing with the child policy.
|
184
185
|
OrphanablePtr<LoadBalancingPolicy> CreateChildPolicyLocked(
|
185
|
-
const
|
186
|
+
const ChannelArgs& args);
|
186
187
|
|
187
188
|
static void OnDelayedRemovalTimer(void* arg, grpc_error_handle error);
|
188
189
|
void OnDelayedRemovalTimerLocked(grpc_error_handle error);
|
@@ -441,7 +442,7 @@ void XdsClusterManagerLb::ClusterChild::Orphan() {
|
|
441
442
|
|
442
443
|
OrphanablePtr<LoadBalancingPolicy>
|
443
444
|
XdsClusterManagerLb::ClusterChild::CreateChildPolicyLocked(
|
444
|
-
const
|
445
|
+
const ChannelArgs& args) {
|
445
446
|
LoadBalancingPolicy::Args lb_policy_args;
|
446
447
|
lb_policy_args.work_serializer =
|
447
448
|
xds_cluster_manager_policy_->work_serializer();
|
@@ -471,7 +472,7 @@ XdsClusterManagerLb::ClusterChild::CreateChildPolicyLocked(
|
|
471
472
|
void XdsClusterManagerLb::ClusterChild::UpdateLocked(
|
472
473
|
RefCountedPtr<LoadBalancingPolicy::Config> config,
|
473
474
|
const absl::StatusOr<ServerAddressList>& addresses,
|
474
|
-
const
|
475
|
+
const ChannelArgs& args) {
|
475
476
|
if (xds_cluster_manager_policy_->shutting_down_) return;
|
476
477
|
// Update child weight.
|
477
478
|
// Reactivate if needed.
|
@@ -487,7 +488,7 @@ void XdsClusterManagerLb::ClusterChild::UpdateLocked(
|
|
487
488
|
UpdateArgs update_args;
|
488
489
|
update_args.config = std::move(config);
|
489
490
|
update_args.addresses = addresses;
|
490
|
-
update_args.args =
|
491
|
+
update_args.args = args;
|
491
492
|
// Update the policy.
|
492
493
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_cluster_manager_lb_trace)) {
|
493
494
|
gpr_log(GPR_INFO,
|
@@ -547,7 +548,7 @@ void XdsClusterManagerLb::ClusterChild::OnDelayedRemovalTimerLocked(
|
|
547
548
|
|
548
549
|
RefCountedPtr<SubchannelInterface>
|
549
550
|
XdsClusterManagerLb::ClusterChild::Helper::CreateSubchannel(
|
550
|
-
ServerAddress address, const
|
551
|
+
ServerAddress address, const ChannelArgs& args) {
|
551
552
|
if (xds_cluster_manager_child_->xds_cluster_manager_policy_->shutting_down_) {
|
552
553
|
return nullptr;
|
553
554
|
}
|
@@ -623,89 +624,80 @@ class XdsClusterManagerLbFactory : public LoadBalancingPolicyFactory {
|
|
623
624
|
return MakeOrphanable<XdsClusterManagerLb>(std::move(args));
|
624
625
|
}
|
625
626
|
|
626
|
-
|
627
|
+
absl::string_view name() const override { return kXdsClusterManager; }
|
627
628
|
|
628
|
-
RefCountedPtr<LoadBalancingPolicy::Config
|
629
|
-
|
630
|
-
GPR_DEBUG_ASSERT(error != nullptr && GRPC_ERROR_IS_NONE(*error));
|
629
|
+
absl::StatusOr<RefCountedPtr<LoadBalancingPolicy::Config>>
|
630
|
+
ParseLoadBalancingConfig(const Json& json) const override {
|
631
631
|
if (json.type() == Json::Type::JSON_NULL) {
|
632
632
|
// xds_cluster_manager was mentioned as a policy in the deprecated
|
633
633
|
// loadBalancingPolicy field or in the client API.
|
634
|
-
|
634
|
+
return absl::InvalidArgumentError(
|
635
635
|
"field:loadBalancingPolicy error:xds_cluster_manager policy requires "
|
636
636
|
"configuration. Please use loadBalancingConfig field of service "
|
637
637
|
"config instead.");
|
638
|
-
return nullptr;
|
639
638
|
}
|
640
|
-
std::vector<
|
639
|
+
std::vector<std::string> errors;
|
641
640
|
XdsClusterManagerLbConfig::ClusterMap cluster_map;
|
642
641
|
std::set<std::string /*cluster_name*/> clusters_to_be_used;
|
643
642
|
auto it = json.object_value().find("children");
|
644
643
|
if (it == json.object_value().end()) {
|
645
|
-
|
646
|
-
"field:children error:required field not present"));
|
644
|
+
errors.emplace_back("field:children error:required field not present");
|
647
645
|
} else if (it->second.type() != Json::Type::OBJECT) {
|
648
|
-
|
649
|
-
"field:children error:type should be object"));
|
646
|
+
errors.emplace_back("field:children error:type should be object");
|
650
647
|
} else {
|
651
648
|
for (const auto& p : it->second.object_value()) {
|
652
649
|
const std::string& child_name = p.first;
|
653
650
|
if (child_name.empty()) {
|
654
|
-
|
655
|
-
"field:children element error: name cannot be empty"));
|
651
|
+
errors.emplace_back("field:children error: name cannot be empty");
|
656
652
|
continue;
|
657
653
|
}
|
658
|
-
|
659
|
-
|
660
|
-
|
661
|
-
|
662
|
-
|
663
|
-
absl::StrCat("field:children name:", child_name), &child_errors));
|
654
|
+
auto config = ParseChildConfig(p.second);
|
655
|
+
if (!config.ok()) {
|
656
|
+
errors.emplace_back(
|
657
|
+
absl::StrCat("field:children name:", child_name,
|
658
|
+
" error:", config.status().message()));
|
664
659
|
} else {
|
665
|
-
cluster_map[child_name] = std::move(
|
660
|
+
cluster_map[child_name] = std::move(*config);
|
666
661
|
clusters_to_be_used.insert(child_name);
|
667
662
|
}
|
668
663
|
}
|
669
664
|
}
|
670
665
|
if (cluster_map.empty()) {
|
671
|
-
|
672
|
-
GRPC_ERROR_CREATE_FROM_STATIC_STRING("no valid children configured"));
|
666
|
+
errors.emplace_back("no valid children configured");
|
673
667
|
}
|
674
|
-
if (!
|
675
|
-
|
676
|
-
"xds_cluster_manager_experimental LB policy config",
|
677
|
-
|
668
|
+
if (!errors.empty()) {
|
669
|
+
return absl::InvalidArgumentError(absl::StrCat(
|
670
|
+
"errors parsing xds_cluster_manager_experimental LB policy config: [",
|
671
|
+
absl::StrJoin(errors, "; "), "]"));
|
678
672
|
}
|
679
673
|
return MakeRefCounted<XdsClusterManagerLbConfig>(std::move(cluster_map));
|
680
674
|
}
|
681
675
|
|
682
676
|
private:
|
683
|
-
static
|
684
|
-
|
685
|
-
RefCountedPtr<LoadBalancingPolicy::Config>* child_config) {
|
686
|
-
std::vector<grpc_error_handle> error_list;
|
677
|
+
static absl::StatusOr<RefCountedPtr<LoadBalancingPolicy::Config>>
|
678
|
+
ParseChildConfig(const Json& json) {
|
687
679
|
if (json.type() != Json::Type::OBJECT) {
|
688
|
-
|
689
|
-
"value should be of type object"));
|
690
|
-
return error_list;
|
680
|
+
return absl::InvalidArgumentError("value should be of type object");
|
691
681
|
}
|
682
|
+
RefCountedPtr<LoadBalancingPolicy::Config> child_config;
|
683
|
+
std::vector<std::string> errors;
|
692
684
|
auto it = json.object_value().find("childPolicy");
|
693
685
|
if (it == json.object_value().end()) {
|
694
|
-
|
695
|
-
GRPC_ERROR_CREATE_FROM_STATIC_STRING("did not find childPolicy"));
|
686
|
+
errors.emplace_back("did not find childPolicy");
|
696
687
|
} else {
|
697
|
-
|
698
|
-
|
699
|
-
|
700
|
-
|
701
|
-
|
702
|
-
|
703
|
-
|
704
|
-
error_list.push_back(
|
705
|
-
GRPC_ERROR_CREATE_FROM_VECTOR("field:childPolicy", &child_errors));
|
688
|
+
auto config =
|
689
|
+
LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(it->second);
|
690
|
+
if (!config.ok()) {
|
691
|
+
errors.emplace_back(absl::StrCat("field:childPolicy error:",
|
692
|
+
config.status().message()));
|
693
|
+
} else {
|
694
|
+
child_config = std::move(*config);
|
706
695
|
}
|
707
696
|
}
|
708
|
-
|
697
|
+
if (!errors.empty()) {
|
698
|
+
return absl::InvalidArgumentError(absl::StrJoin(errors, "; "));
|
699
|
+
}
|
700
|
+
return child_config;
|
709
701
|
}
|
710
702
|
};
|
711
703
|
|