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
@@ -20,7 +20,6 @@
|
|
20
20
|
|
21
21
|
#include <inttypes.h>
|
22
22
|
#include <limits.h>
|
23
|
-
#include <string.h>
|
24
23
|
|
25
24
|
#include <algorithm>
|
26
25
|
#include <functional>
|
@@ -28,7 +27,6 @@
|
|
28
27
|
#include <set>
|
29
28
|
#include <vector>
|
30
29
|
|
31
|
-
#include "absl/container/inlined_vector.h"
|
32
30
|
#include "absl/memory/memory.h"
|
33
31
|
#include "absl/status/status.h"
|
34
32
|
#include "absl/status/statusor.h"
|
@@ -43,7 +41,6 @@
|
|
43
41
|
#include <grpc/impl/codegen/gpr_types.h>
|
44
42
|
#include <grpc/slice.h>
|
45
43
|
#include <grpc/status.h>
|
46
|
-
#include <grpc/support/alloc.h>
|
47
44
|
#include <grpc/support/log.h>
|
48
45
|
#include <grpc/support/string_util.h>
|
49
46
|
|
@@ -54,29 +51,29 @@
|
|
54
51
|
#include "src/core/ext/filters/client_channel/dynamic_filters.h"
|
55
52
|
#include "src/core/ext/filters/client_channel/global_subchannel_pool.h"
|
56
53
|
#include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
|
57
|
-
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
|
58
54
|
#include "src/core/ext/filters/client_channel/local_subchannel_pool.h"
|
59
|
-
#include "src/core/ext/filters/client_channel/proxy_mapper_registry.h"
|
60
55
|
#include "src/core/ext/filters/client_channel/resolver_result_parsing.h"
|
61
56
|
#include "src/core/ext/filters/client_channel/retry_filter.h"
|
62
57
|
#include "src/core/ext/filters/client_channel/subchannel.h"
|
63
|
-
#include "src/core/ext/filters/client_channel/subchannel_interface.h"
|
64
58
|
#include "src/core/ext/filters/client_channel/subchannel_interface_internal.h"
|
65
59
|
#include "src/core/ext/filters/deadline/deadline_filter.h"
|
66
60
|
#include "src/core/lib/channel/channel_args.h"
|
67
61
|
#include "src/core/lib/channel/channel_stack.h"
|
68
62
|
#include "src/core/lib/channel/channel_trace.h"
|
63
|
+
#include "src/core/lib/channel/status_util.h"
|
69
64
|
#include "src/core/lib/config/core_configuration.h"
|
70
65
|
#include "src/core/lib/debug/trace.h"
|
71
66
|
#include "src/core/lib/gpr/useful.h"
|
72
67
|
#include "src/core/lib/gprpp/debug_location.h"
|
73
68
|
#include "src/core/lib/gprpp/sync.h"
|
69
|
+
#include "src/core/lib/gprpp/work_serializer.h"
|
70
|
+
#include "src/core/lib/handshaker/proxy_mapper_registry.h"
|
74
71
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
75
72
|
#include "src/core/lib/iomgr/polling_entity.h"
|
76
73
|
#include "src/core/lib/iomgr/pollset_set.h"
|
77
|
-
#include "src/core/lib/iomgr/work_serializer.h"
|
78
74
|
#include "src/core/lib/json/json.h"
|
79
|
-
#include "src/core/lib/
|
75
|
+
#include "src/core/lib/load_balancing/lb_policy_registry.h"
|
76
|
+
#include "src/core/lib/load_balancing/subchannel_interface.h"
|
80
77
|
#include "src/core/lib/resolver/resolver_registry.h"
|
81
78
|
#include "src/core/lib/resolver/server_address.h"
|
82
79
|
#include "src/core/lib/service_config/service_config_call_data.h"
|
@@ -266,28 +263,6 @@ const grpc_channel_filter ClientChannel::kFilterVtable = {
|
|
266
263
|
|
267
264
|
namespace {
|
268
265
|
|
269
|
-
// Channel arg pointer vtable for GRPC_ARG_CLIENT_CHANNEL.
|
270
|
-
void* ClientChannelArgCopy(void* p) { return p; }
|
271
|
-
void ClientChannelArgDestroy(void* /*p*/) {}
|
272
|
-
int ClientChannelArgCmp(void* p, void* q) { return QsortCompare(p, q); }
|
273
|
-
const grpc_arg_pointer_vtable kClientChannelArgPointerVtable = {
|
274
|
-
ClientChannelArgCopy, ClientChannelArgDestroy, ClientChannelArgCmp};
|
275
|
-
|
276
|
-
// Channel arg pointer vtable for GRPC_ARG_SERVICE_CONFIG_OBJ.
|
277
|
-
void* ServiceConfigObjArgCopy(void* p) {
|
278
|
-
auto* service_config = static_cast<ServiceConfig*>(p);
|
279
|
-
service_config->Ref().release();
|
280
|
-
return p;
|
281
|
-
}
|
282
|
-
void ServiceConfigObjArgDestroy(void* p) {
|
283
|
-
auto* service_config = static_cast<ServiceConfig*>(p);
|
284
|
-
service_config->Unref();
|
285
|
-
}
|
286
|
-
int ServiceConfigObjArgCmp(void* p, void* q) { return QsortCompare(p, q); }
|
287
|
-
const grpc_arg_pointer_vtable kServiceConfigObjArgPointerVtable = {
|
288
|
-
ServiceConfigObjArgCopy, ServiceConfigObjArgDestroy,
|
289
|
-
ServiceConfigObjArgCmp};
|
290
|
-
|
291
266
|
class DynamicTerminationFilter {
|
292
267
|
public:
|
293
268
|
class CallData;
|
@@ -545,9 +520,7 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
545
520
|
data_watchers_.push_back(std::move(internal_watcher));
|
546
521
|
}
|
547
522
|
|
548
|
-
|
549
|
-
return subchannel_->channel_args();
|
550
|
-
}
|
523
|
+
ChannelArgs channel_args() override { return subchannel_->channel_args(); }
|
551
524
|
|
552
525
|
void ThrottleKeepaliveTime(int new_keepalive_time) {
|
553
526
|
subchannel_->ThrottleKeepaliveTime(new_keepalive_time);
|
@@ -764,10 +737,14 @@ void ClientChannel::ExternalConnectivityWatcher::Notify(
|
|
764
737
|
// Hop back into the work_serializer to clean up.
|
765
738
|
// Not needed in state SHUTDOWN, because the tracker will
|
766
739
|
// automatically remove all watchers in that case.
|
740
|
+
// Note: The callback takes a ref in case the ref inside the state tracker
|
741
|
+
// gets removed before the callback runs via a SHUTDOWN notification.
|
767
742
|
if (state != GRPC_CHANNEL_SHUTDOWN) {
|
743
|
+
Ref(DEBUG_LOCATION, "RemoveWatcherLocked()").release();
|
768
744
|
chand_->work_serializer_->Run(
|
769
745
|
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
770
746
|
RemoveWatcherLocked();
|
747
|
+
Unref(DEBUG_LOCATION, "RemoveWatcherLocked()");
|
771
748
|
},
|
772
749
|
DEBUG_LOCATION);
|
773
750
|
}
|
@@ -781,9 +758,13 @@ void ClientChannel::ExternalConnectivityWatcher::Cancel() {
|
|
781
758
|
}
|
782
759
|
ExecCtx::Run(DEBUG_LOCATION, on_complete_, GRPC_ERROR_CANCELLED);
|
783
760
|
// Hop back into the work_serializer to clean up.
|
761
|
+
// Note: The callback takes a ref in case the ref inside the state tracker
|
762
|
+
// gets removed before the callback runs via a SHUTDOWN notification.
|
763
|
+
Ref(DEBUG_LOCATION, "RemoveWatcherLocked()").release();
|
784
764
|
chand_->work_serializer_->Run(
|
785
765
|
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
786
766
|
RemoveWatcherLocked();
|
767
|
+
Unref(DEBUG_LOCATION, "RemoveWatcherLocked()");
|
787
768
|
},
|
788
769
|
DEBUG_LOCATION);
|
789
770
|
}
|
@@ -879,67 +860,23 @@ class ClientChannel::ClientChannelControlHelper
|
|
879
860
|
}
|
880
861
|
|
881
862
|
RefCountedPtr<SubchannelInterface> CreateSubchannel(
|
882
|
-
ServerAddress address, const
|
863
|
+
ServerAddress address, const ChannelArgs& args) override
|
883
864
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
884
865
|
if (chand_->resolver_ == nullptr) return nullptr; // Shutting down.
|
885
866
|
// Determine health check service name.
|
886
867
|
absl::optional<std::string> health_check_service_name;
|
887
|
-
|
888
|
-
|
889
|
-
|
890
|
-
bool inhibit_health_checking = grpc_channel_args_find_bool(
|
891
|
-
&args, GRPC_ARG_INHIBIT_HEALTH_CHECKING, false);
|
892
|
-
if (!inhibit_health_checking) {
|
893
|
-
health_check_service_name = health_check_service_name_arg;
|
894
|
-
}
|
868
|
+
if (!args.GetBool(GRPC_ARG_INHIBIT_HEALTH_CHECKING).value_or(false)) {
|
869
|
+
health_check_service_name =
|
870
|
+
args.GetOwnedString(GRPC_ARG_HEALTH_CHECK_SERVICE_NAME);
|
895
871
|
}
|
896
872
|
// Construct channel args for subchannel.
|
897
|
-
|
898
|
-
|
899
|
-
|
900
|
-
GRPC_ARG_INHIBIT_HEALTH_CHECKING,
|
901
|
-
GRPC_ARG_CHANNELZ_CHANNEL_NODE,
|
902
|
-
};
|
903
|
-
// Add channel args needed for the subchannel.
|
904
|
-
absl::InlinedVector<grpc_arg, 2> args_to_add = {
|
905
|
-
SubchannelPoolInterface::CreateChannelArg(
|
906
|
-
chand_->subchannel_pool_.get()),
|
907
|
-
};
|
908
|
-
// Check if default authority arg is already set.
|
909
|
-
const char* default_authority =
|
910
|
-
grpc_channel_args_find_string(&args, GRPC_ARG_DEFAULT_AUTHORITY);
|
911
|
-
// Add args from subchannel address.
|
912
|
-
if (address.args() != nullptr) {
|
913
|
-
for (size_t j = 0; j < address.args()->num_args; ++j) {
|
914
|
-
grpc_arg& arg = address.args()->args[j];
|
915
|
-
if (strcmp(arg.key, GRPC_ARG_DEFAULT_AUTHORITY) == 0) {
|
916
|
-
// Don't add default authority arg from subchannel address if
|
917
|
-
// it's already set at the channel level -- the value from the
|
918
|
-
// application should take precedence over what is set by the
|
919
|
-
// resolver.
|
920
|
-
if (default_authority != nullptr) continue;
|
921
|
-
default_authority = arg.value.string;
|
922
|
-
}
|
923
|
-
args_to_add.emplace_back(arg);
|
924
|
-
}
|
925
|
-
}
|
926
|
-
// If we haven't already set the default authority arg, add it from
|
927
|
-
// the channel.
|
928
|
-
if (default_authority == nullptr) {
|
929
|
-
// Remove it, just in case it's actually present but is the wrong type.
|
930
|
-
args_to_remove.push_back(GRPC_ARG_DEFAULT_AUTHORITY);
|
931
|
-
args_to_add.push_back(grpc_channel_arg_string_create(
|
932
|
-
const_cast<char*>(GRPC_ARG_DEFAULT_AUTHORITY),
|
933
|
-
const_cast<char*>(chand_->default_authority_.c_str())));
|
934
|
-
}
|
935
|
-
grpc_channel_args* new_args = grpc_channel_args_copy_and_add_and_remove(
|
936
|
-
&args, args_to_remove.data(), args_to_remove.size(), args_to_add.data(),
|
937
|
-
args_to_add.size());
|
873
|
+
ChannelArgs subchannel_args = ClientChannel::MakeSubchannelArgs(
|
874
|
+
args, address.args(), chand_->subchannel_pool_,
|
875
|
+
chand_->default_authority_);
|
938
876
|
// Create subchannel.
|
939
877
|
RefCountedPtr<Subchannel> subchannel =
|
940
878
|
chand_->client_channel_factory_->CreateSubchannel(address.address(),
|
941
|
-
|
942
|
-
grpc_channel_args_destroy(new_args);
|
879
|
+
subchannel_args);
|
943
880
|
if (subchannel == nullptr) return nullptr;
|
944
881
|
// Make sure the subchannel has updated keepalive time.
|
945
882
|
subchannel->ThrottleKeepaliveTime(chand_->keepalive_time_);
|
@@ -1030,36 +967,28 @@ void ClientChannel::Destroy(grpc_channel_element* elem) {
|
|
1030
967
|
namespace {
|
1031
968
|
|
1032
969
|
RefCountedPtr<SubchannelPoolInterface> GetSubchannelPool(
|
1033
|
-
const
|
1034
|
-
|
1035
|
-
args, GRPC_ARG_USE_LOCAL_SUBCHANNEL_POOL, false);
|
1036
|
-
if (use_local_subchannel_pool) {
|
970
|
+
const ChannelArgs& args) {
|
971
|
+
if (args.GetBool(GRPC_ARG_USE_LOCAL_SUBCHANNEL_POOL).value_or(false)) {
|
1037
972
|
return MakeRefCounted<LocalSubchannelPool>();
|
1038
973
|
}
|
1039
974
|
return GlobalSubchannelPool::instance();
|
1040
975
|
}
|
1041
976
|
|
1042
|
-
channelz::ChannelNode* GetChannelzNode(const grpc_channel_args* args) {
|
1043
|
-
return grpc_channel_args_find_pointer<channelz::ChannelNode>(
|
1044
|
-
args, GRPC_ARG_CHANNELZ_CHANNEL_NODE);
|
1045
|
-
}
|
1046
|
-
|
1047
977
|
} // namespace
|
1048
978
|
|
1049
979
|
ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
1050
980
|
grpc_error_handle* error)
|
1051
|
-
:
|
1052
|
-
|
981
|
+
: channel_args_(ChannelArgs::FromC(args->channel_args)),
|
982
|
+
deadline_checking_enabled_(grpc_deadline_checking_enabled(channel_args_)),
|
1053
983
|
owning_stack_(args->channel_stack),
|
1054
|
-
client_channel_factory_(
|
1055
|
-
|
1056
|
-
channelz_node_(GetChannelzNode(args->channel_args)),
|
984
|
+
client_channel_factory_(channel_args_.GetObject<ClientChannelFactory>()),
|
985
|
+
channelz_node_(channel_args_.GetObject<channelz::ChannelNode>()),
|
1057
986
|
interested_parties_(grpc_pollset_set_create()),
|
1058
987
|
service_config_parser_index_(
|
1059
988
|
internal::ClientChannelServiceConfigParser::ParserIndex()),
|
1060
989
|
work_serializer_(std::make_shared<WorkSerializer>()),
|
1061
990
|
state_tracker_("client_channel", GRPC_CHANNEL_IDLE),
|
1062
|
-
subchannel_pool_(GetSubchannelPool(
|
991
|
+
subchannel_pool_(GetSubchannelPool(channel_args_)) {
|
1063
992
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1064
993
|
gpr_log(GPR_INFO, "chand=%p: creating client_channel for channel stack %p",
|
1065
994
|
this, owning_stack_);
|
@@ -1074,34 +1003,30 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
|
1074
1003
|
}
|
1075
1004
|
// Get default service config. If none is specified via the client API,
|
1076
1005
|
// we use an empty config.
|
1077
|
-
|
1078
|
-
|
1079
|
-
if (service_config_json
|
1006
|
+
absl::optional<absl::string_view> service_config_json =
|
1007
|
+
channel_args_.GetString(GRPC_ARG_SERVICE_CONFIG);
|
1008
|
+
if (!service_config_json.has_value()) service_config_json = "{}";
|
1080
1009
|
*error = GRPC_ERROR_NONE;
|
1081
|
-
|
1082
|
-
ServiceConfigImpl::Create(
|
1083
|
-
if (!
|
1084
|
-
|
1010
|
+
auto service_config =
|
1011
|
+
ServiceConfigImpl::Create(channel_args_, *service_config_json);
|
1012
|
+
if (!service_config.ok()) {
|
1013
|
+
*error = absl_status_to_grpc_error(service_config.status());
|
1085
1014
|
return;
|
1086
1015
|
}
|
1016
|
+
default_service_config_ = std::move(*service_config);
|
1087
1017
|
// Get URI to resolve, using proxy mapper if needed.
|
1088
|
-
|
1089
|
-
|
1090
|
-
if (server_uri
|
1018
|
+
absl::optional<std::string> server_uri =
|
1019
|
+
channel_args_.GetOwnedString(GRPC_ARG_SERVER_URI);
|
1020
|
+
if (!server_uri.has_value()) {
|
1091
1021
|
*error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1092
1022
|
"target URI channel arg missing or wrong type in client channel "
|
1093
1023
|
"filter");
|
1094
1024
|
return;
|
1095
1025
|
}
|
1096
|
-
uri_to_resolve_ =
|
1097
|
-
|
1098
|
-
|
1099
|
-
|
1100
|
-
&new_args);
|
1101
|
-
if (proxy_name != nullptr) {
|
1102
|
-
uri_to_resolve_ = proxy_name;
|
1103
|
-
gpr_free(proxy_name);
|
1104
|
-
}
|
1026
|
+
uri_to_resolve_ = CoreConfiguration::Get()
|
1027
|
+
.proxy_mapper_registry()
|
1028
|
+
.MapName(*server_uri, &channel_args_)
|
1029
|
+
.value_or(*server_uri);
|
1105
1030
|
// Make sure the URI to resolve is valid, so that we know that
|
1106
1031
|
// resolver creation will succeed later.
|
1107
1032
|
if (!CoreConfiguration::Get().resolver_registry().IsValidTarget(
|
@@ -1112,23 +1037,23 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
|
1112
1037
|
}
|
1113
1038
|
// Strip out service config channel arg, so that it doesn't affect
|
1114
1039
|
// subchannel uniqueness when the args flow down to that layer.
|
1115
|
-
|
1116
|
-
channel_args_ = grpc_channel_args_copy_and_remove(
|
1117
|
-
new_args != nullptr ? new_args : args->channel_args, &arg_to_remove, 1);
|
1118
|
-
grpc_channel_args_destroy(new_args);
|
1040
|
+
channel_args_ = channel_args_.Remove(GRPC_ARG_SERVICE_CONFIG);
|
1119
1041
|
// Set initial keepalive time.
|
1120
|
-
|
1121
|
-
|
1122
|
-
|
1042
|
+
auto keepalive_arg = channel_args_.GetInt(GRPC_ARG_KEEPALIVE_TIME_MS);
|
1043
|
+
if (keepalive_arg.has_value()) {
|
1044
|
+
keepalive_time_ = Clamp(*keepalive_arg, 1, INT_MAX);
|
1045
|
+
} else {
|
1046
|
+
keepalive_time_ = -1; // unset
|
1047
|
+
}
|
1123
1048
|
// Set default authority.
|
1124
|
-
|
1125
|
-
|
1126
|
-
if (default_authority
|
1049
|
+
absl::optional<std::string> default_authority =
|
1050
|
+
channel_args_.GetOwnedString(GRPC_ARG_DEFAULT_AUTHORITY);
|
1051
|
+
if (!default_authority.has_value()) {
|
1127
1052
|
default_authority_ =
|
1128
1053
|
CoreConfiguration::Get().resolver_registry().GetDefaultAuthority(
|
1129
|
-
server_uri);
|
1054
|
+
*server_uri);
|
1130
1055
|
} else {
|
1131
|
-
default_authority_ = default_authority;
|
1056
|
+
default_authority_ = std::move(*default_authority);
|
1132
1057
|
}
|
1133
1058
|
// Success.
|
1134
1059
|
*error = GRPC_ERROR_NONE;
|
@@ -1139,7 +1064,6 @@ ClientChannel::~ClientChannel() {
|
|
1139
1064
|
gpr_log(GPR_INFO, "chand=%p: destroying channel", this);
|
1140
1065
|
}
|
1141
1066
|
DestroyResolverAndLbPolicyLocked();
|
1142
|
-
grpc_channel_args_destroy(channel_args_);
|
1143
1067
|
// Stop backup polling.
|
1144
1068
|
grpc_client_channel_stop_backup_polling(interested_parties_);
|
1145
1069
|
grpc_pollset_set_destroy(interested_parties_);
|
@@ -1157,6 +1081,29 @@ ClientChannel::CreateLoadBalancedCall(
|
|
1157
1081
|
call_dispatch_controller, is_transparent_retry));
|
1158
1082
|
}
|
1159
1083
|
|
1084
|
+
ChannelArgs ClientChannel::MakeSubchannelArgs(
|
1085
|
+
const ChannelArgs& channel_args, const ChannelArgs& address_args,
|
1086
|
+
const RefCountedPtr<SubchannelPoolInterface>& subchannel_pool,
|
1087
|
+
const std::string& channel_default_authority) {
|
1088
|
+
// Note that we start with the channel-level args and then apply the
|
1089
|
+
// per-address args, so that if a value is present in both, the one
|
1090
|
+
// in the channel-level args is used. This is particularly important
|
1091
|
+
// for the GRPC_ARG_DEFAULT_AUTHORITY arg, which we want to allow
|
1092
|
+
// resolvers to set on a per-address basis only if the application
|
1093
|
+
// did not explicitly set it at the channel level.
|
1094
|
+
return channel_args.UnionWith(address_args)
|
1095
|
+
.SetObject(subchannel_pool)
|
1096
|
+
// If we haven't already set the default authority arg (i.e., it
|
1097
|
+
// was not explicitly set by the application nor overridden by
|
1098
|
+
// the resolver), add it from the channel's default.
|
1099
|
+
.SetIfUnset(GRPC_ARG_DEFAULT_AUTHORITY, channel_default_authority)
|
1100
|
+
// Remove channel args that should not affect subchannel
|
1101
|
+
// uniqueness.
|
1102
|
+
.Remove(GRPC_ARG_HEALTH_CHECK_SERVICE_NAME)
|
1103
|
+
.Remove(GRPC_ARG_INHIBIT_HEALTH_CHECKING)
|
1104
|
+
.Remove(GRPC_ARG_CHANNELZ_CHANNEL_NODE);
|
1105
|
+
}
|
1106
|
+
|
1160
1107
|
namespace {
|
1161
1108
|
|
1162
1109
|
RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
|
@@ -1168,41 +1115,41 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
|
|
1168
1115
|
}
|
1169
1116
|
// Try the deprecated LB policy name from the service config.
|
1170
1117
|
// If not, try the setting from channel args.
|
1171
|
-
|
1118
|
+
absl::optional<absl::string_view> policy_name;
|
1172
1119
|
if (!parsed_service_config->parsed_deprecated_lb_policy().empty()) {
|
1173
|
-
policy_name = parsed_service_config->parsed_deprecated_lb_policy()
|
1120
|
+
policy_name = parsed_service_config->parsed_deprecated_lb_policy();
|
1174
1121
|
} else {
|
1175
|
-
policy_name =
|
1176
|
-
GRPC_ARG_LB_POLICY_NAME);
|
1122
|
+
policy_name = resolver_result.args.GetString(GRPC_ARG_LB_POLICY_NAME);
|
1177
1123
|
bool requires_config = false;
|
1178
|
-
if (policy_name
|
1179
|
-
(!
|
1180
|
-
|
1124
|
+
if (policy_name.has_value() &&
|
1125
|
+
(!CoreConfiguration::Get()
|
1126
|
+
.lb_policy_registry()
|
1127
|
+
.LoadBalancingPolicyExists(*policy_name, &requires_config) ||
|
1181
1128
|
requires_config)) {
|
1182
1129
|
if (requires_config) {
|
1183
1130
|
gpr_log(GPR_ERROR,
|
1184
1131
|
"LB policy: %s passed through channel_args must not "
|
1185
1132
|
"require a config. Using pick_first instead.",
|
1186
|
-
policy_name);
|
1133
|
+
std::string(*policy_name).c_str());
|
1187
1134
|
} else {
|
1188
1135
|
gpr_log(GPR_ERROR,
|
1189
1136
|
"LB policy: %s passed through channel_args does not exist. "
|
1190
1137
|
"Using pick_first instead.",
|
1191
|
-
policy_name);
|
1138
|
+
std::string(*policy_name).c_str());
|
1192
1139
|
}
|
1193
1140
|
policy_name = "pick_first";
|
1194
1141
|
}
|
1195
1142
|
}
|
1196
1143
|
// Use pick_first if nothing was specified and we didn't select grpclb
|
1197
1144
|
// above.
|
1198
|
-
if (policy_name
|
1145
|
+
if (!policy_name.has_value()) policy_name = "pick_first";
|
1199
1146
|
// Now that we have the policy name, construct an empty config for it.
|
1200
1147
|
Json config_json = Json::Array{Json::Object{
|
1201
|
-
{policy_name, Json::Object{}},
|
1148
|
+
{std::string(*policy_name), Json::Object{}},
|
1202
1149
|
}};
|
1203
|
-
|
1204
|
-
|
1205
|
-
|
1150
|
+
auto lb_policy_config =
|
1151
|
+
CoreConfiguration::Get().lb_policy_registry().ParseLoadBalancingConfig(
|
1152
|
+
config_json);
|
1206
1153
|
// The policy name came from one of three places:
|
1207
1154
|
// - The deprecated loadBalancingPolicy field in the service config,
|
1208
1155
|
// in which case the code in ClientChannelServiceConfigParser
|
@@ -1212,9 +1159,8 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
|
|
1212
1159
|
// - A channel arg, in which case we check that the specified policy exists
|
1213
1160
|
// and accepts an empty config. If not, we revert to using pick_first
|
1214
1161
|
// lb_policy
|
1215
|
-
GPR_ASSERT(lb_policy_config
|
1216
|
-
|
1217
|
-
return lb_policy_config;
|
1162
|
+
GPR_ASSERT(lb_policy_config.ok());
|
1163
|
+
return std::move(*lb_policy_config);
|
1218
1164
|
}
|
1219
1165
|
|
1220
1166
|
} // namespace
|
@@ -1225,6 +1171,9 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1225
1171
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1226
1172
|
gpr_log(GPR_INFO, "chand=%p: got resolver result", this);
|
1227
1173
|
}
|
1174
|
+
// Grab resolver result health callback.
|
1175
|
+
auto resolver_callback = std::move(result.result_health_callback);
|
1176
|
+
absl::Status resolver_result_status;
|
1228
1177
|
// We only want to trace the address resolution in the follow cases:
|
1229
1178
|
// (a) Address resolution resulted in service config change.
|
1230
1179
|
// (b) Address resolution that causes number of backends to go from
|
@@ -1276,6 +1225,8 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1276
1225
|
// TRANSIENT_FAILURE.
|
1277
1226
|
OnResolverErrorLocked(result.service_config.status());
|
1278
1227
|
trace_strings.push_back("no valid service config");
|
1228
|
+
resolver_result_status =
|
1229
|
+
absl::UnavailableError("no valid service config");
|
1279
1230
|
}
|
1280
1231
|
} else if (*result.service_config == nullptr) {
|
1281
1232
|
// Resolver did not return any service config.
|
@@ -1289,7 +1240,7 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1289
1240
|
} else {
|
1290
1241
|
// Use ServiceConfig and ConfigSelector returned by resolver.
|
1291
1242
|
service_config = std::move(*result.service_config);
|
1292
|
-
config_selector =
|
1243
|
+
config_selector = result.args.GetObjectRef<ConfigSelector>();
|
1293
1244
|
}
|
1294
1245
|
// Note: The only case in which service_config is null here is if the resolver
|
1295
1246
|
// returned a service config error and we don't have a previous service
|
@@ -1313,14 +1264,14 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1313
1264
|
// If either has changed, apply the global parameters now.
|
1314
1265
|
if (service_config_changed || config_selector_changed) {
|
1315
1266
|
// Update service config in control plane.
|
1316
|
-
UpdateServiceConfigInControlPlaneLocked(
|
1317
|
-
|
1318
|
-
|
1267
|
+
UpdateServiceConfigInControlPlaneLocked(
|
1268
|
+
std::move(service_config), std::move(config_selector),
|
1269
|
+
std::string(lb_policy_config->name()));
|
1319
1270
|
} else if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1320
1271
|
gpr_log(GPR_INFO, "chand=%p: service config not changed", this);
|
1321
1272
|
}
|
1322
1273
|
// Create or update LB policy, as needed.
|
1323
|
-
CreateOrUpdateLbPolicyLocked(
|
1274
|
+
resolver_result_status = CreateOrUpdateLbPolicyLocked(
|
1324
1275
|
std::move(lb_policy_config),
|
1325
1276
|
parsed_service_config->health_check_service_name(), std::move(result));
|
1326
1277
|
if (service_config_changed || config_selector_changed) {
|
@@ -1334,6 +1285,10 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1334
1285
|
trace_strings.push_back("Service config changed");
|
1335
1286
|
}
|
1336
1287
|
}
|
1288
|
+
// Invoke resolver callback if needed.
|
1289
|
+
if (resolver_callback != nullptr) {
|
1290
|
+
resolver_callback(std::move(resolver_result_status));
|
1291
|
+
}
|
1337
1292
|
// Add channel trace event.
|
1338
1293
|
if (!trace_strings.empty()) {
|
1339
1294
|
std::string message =
|
@@ -1359,7 +1314,8 @@ void ClientChannel::OnResolverErrorLocked(absl::Status status) {
|
|
1359
1314
|
{
|
1360
1315
|
MutexLock lock(&resolution_mu_);
|
1361
1316
|
// Update resolver transient failure.
|
1362
|
-
resolver_transient_failure_error_ =
|
1317
|
+
resolver_transient_failure_error_ =
|
1318
|
+
MaybeRewriteIllegalStatusCode(status, "resolver");
|
1363
1319
|
// Process calls that were queued waiting for the resolver result.
|
1364
1320
|
for (ResolverQueuedCall* call = resolver_queued_calls_; call != nullptr;
|
1365
1321
|
call = call->next) {
|
@@ -1379,7 +1335,7 @@ void ClientChannel::OnResolverErrorLocked(absl::Status status) {
|
|
1379
1335
|
}
|
1380
1336
|
}
|
1381
1337
|
|
1382
|
-
|
1338
|
+
absl::Status ClientChannel::CreateOrUpdateLbPolicyLocked(
|
1383
1339
|
RefCountedPtr<LoadBalancingPolicy::Config> lb_policy_config,
|
1384
1340
|
const absl::optional<std::string>& health_check_service_name,
|
1385
1341
|
Resolver::Result result) {
|
@@ -1388,39 +1344,35 @@ void ClientChannel::CreateOrUpdateLbPolicyLocked(
|
|
1388
1344
|
update_args.addresses = std::move(result.addresses);
|
1389
1345
|
update_args.config = std::move(lb_policy_config);
|
1390
1346
|
update_args.resolution_note = std::move(result.resolution_note);
|
1391
|
-
// Add health check service name to channel args.
|
1392
|
-
absl::InlinedVector<grpc_arg, 1> args_to_add;
|
1393
|
-
if (health_check_service_name.has_value()) {
|
1394
|
-
args_to_add.push_back(grpc_channel_arg_string_create(
|
1395
|
-
const_cast<char*>(GRPC_ARG_HEALTH_CHECK_SERVICE_NAME),
|
1396
|
-
const_cast<char*>(health_check_service_name->c_str())));
|
1397
|
-
}
|
1398
1347
|
// Remove the config selector from channel args so that we're not holding
|
1399
1348
|
// unnecessary refs that cause it to be destroyed somewhere other than in the
|
1400
1349
|
// WorkSerializer.
|
1401
|
-
|
1402
|
-
|
1403
|
-
|
1350
|
+
update_args.args = result.args.Remove(GRPC_ARG_CONFIG_SELECTOR);
|
1351
|
+
// Add health check service name to channel args.
|
1352
|
+
if (health_check_service_name.has_value()) {
|
1353
|
+
update_args.args = update_args.args.Set(GRPC_ARG_HEALTH_CHECK_SERVICE_NAME,
|
1354
|
+
*health_check_service_name);
|
1355
|
+
}
|
1404
1356
|
// Create policy if needed.
|
1405
1357
|
if (lb_policy_ == nullptr) {
|
1406
|
-
lb_policy_ = CreateLbPolicyLocked(
|
1358
|
+
lb_policy_ = CreateLbPolicyLocked(update_args.args);
|
1407
1359
|
}
|
1408
1360
|
// Update the policy.
|
1409
1361
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1410
1362
|
gpr_log(GPR_INFO, "chand=%p: Updating child policy %p", this,
|
1411
1363
|
lb_policy_.get());
|
1412
1364
|
}
|
1413
|
-
lb_policy_->UpdateLocked(std::move(update_args));
|
1365
|
+
return lb_policy_->UpdateLocked(std::move(update_args));
|
1414
1366
|
}
|
1415
1367
|
|
1416
1368
|
// Creates a new LB policy.
|
1417
1369
|
OrphanablePtr<LoadBalancingPolicy> ClientChannel::CreateLbPolicyLocked(
|
1418
|
-
const
|
1370
|
+
const ChannelArgs& args) {
|
1419
1371
|
LoadBalancingPolicy::Args lb_policy_args;
|
1420
1372
|
lb_policy_args.work_serializer = work_serializer_;
|
1421
1373
|
lb_policy_args.channel_control_helper =
|
1422
1374
|
absl::make_unique<ClientChannelControlHelper>(this);
|
1423
|
-
lb_policy_args.args =
|
1375
|
+
lb_policy_args.args = args;
|
1424
1376
|
OrphanablePtr<LoadBalancingPolicy> lb_policy =
|
1425
1377
|
MakeOrphanable<ChildPolicyHandler>(std::move(lb_policy_args),
|
1426
1378
|
&grpc_client_channel_trace);
|
@@ -1462,8 +1414,7 @@ void ClientChannel::UpdateServiceConfigInControlPlaneLocked(
|
|
1462
1414
|
RefCountedPtr<ConfigSelector> config_selector, std::string lb_policy_name) {
|
1463
1415
|
std::string service_config_json(service_config->json_string());
|
1464
1416
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1465
|
-
gpr_log(GPR_INFO,
|
1466
|
-
"chand=%p: resolver returned updated service config: \"%s\"", this,
|
1417
|
+
gpr_log(GPR_INFO, "chand=%p: using service config: \"%s\"", this,
|
1467
1418
|
service_config_json.c_str());
|
1468
1419
|
}
|
1469
1420
|
// Save service config.
|
@@ -1495,20 +1446,11 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1495
1446
|
config_selector =
|
1496
1447
|
MakeRefCounted<DefaultConfigSelector>(saved_service_config_);
|
1497
1448
|
}
|
1498
|
-
|
1499
|
-
|
1500
|
-
const_cast<char*>(GRPC_ARG_CLIENT_CHANNEL), this,
|
1501
|
-
&kClientChannelArgPointerVtable),
|
1502
|
-
grpc_channel_arg_pointer_create(
|
1503
|
-
const_cast<char*>(GRPC_ARG_SERVICE_CONFIG_OBJ), service_config.get(),
|
1504
|
-
&kServiceConfigObjArgPointerVtable),
|
1505
|
-
};
|
1506
|
-
grpc_channel_args* new_args = grpc_channel_args_copy_and_add(
|
1507
|
-
channel_args_, args_to_add.data(), args_to_add.size());
|
1508
|
-
new_args = config_selector->ModifyChannelArgs(new_args);
|
1449
|
+
ChannelArgs new_args = config_selector->ModifyChannelArgs(
|
1450
|
+
channel_args_.SetObject(this).SetObject(service_config));
|
1509
1451
|
bool enable_retries =
|
1510
|
-
!
|
1511
|
-
|
1452
|
+
!new_args.WantMinimalStack() &&
|
1453
|
+
new_args.GetBool(GRPC_ARG_ENABLE_RETRIES).value_or(true);
|
1512
1454
|
// Construct dynamic filter stack.
|
1513
1455
|
std::vector<const grpc_channel_filter*> filters =
|
1514
1456
|
config_selector->GetFilters();
|
@@ -1518,9 +1460,8 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1518
1460
|
filters.push_back(&DynamicTerminationFilter::kFilterVtable);
|
1519
1461
|
}
|
1520
1462
|
RefCountedPtr<DynamicFilters> dynamic_filters =
|
1521
|
-
DynamicFilters::Create(new_args, std::move(filters));
|
1463
|
+
DynamicFilters::Create(new_args.ToC().get(), std::move(filters));
|
1522
1464
|
GPR_ASSERT(dynamic_filters != nullptr);
|
1523
|
-
grpc_channel_args_destroy(new_args);
|
1524
1465
|
// Grab data plane lock to update service config.
|
1525
1466
|
//
|
1526
1467
|
// We defer unreffing the old values (and deallocating memory) until
|
@@ -1706,6 +1647,10 @@ grpc_error_handle ClientChannel::DoPingLocked(grpc_transport_op* op) {
|
|
1706
1647
|
complete_pick->subchannel.get());
|
1707
1648
|
RefCountedPtr<ConnectedSubchannel> connected_subchannel =
|
1708
1649
|
subchannel->connected_subchannel();
|
1650
|
+
if (connected_subchannel == nullptr) {
|
1651
|
+
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1652
|
+
"LB pick for ping not connected");
|
1653
|
+
}
|
1709
1654
|
connected_subchannel->Ping(op->send_ping.on_initiate,
|
1710
1655
|
op->send_ping.on_ack);
|
1711
1656
|
return GRPC_ERROR_NONE;
|
@@ -1928,7 +1873,6 @@ void ClientChannel::CallData::Destroy(
|
|
1928
1873
|
|
1929
1874
|
void ClientChannel::CallData::StartTransportStreamOpBatch(
|
1930
1875
|
grpc_call_element* elem, grpc_transport_stream_op_batch* batch) {
|
1931
|
-
GPR_TIMER_SCOPE("cc_start_transport_stream_op_batch", 0);
|
1932
1876
|
CallData* calld = static_cast<CallData*>(elem->call_data);
|
1933
1877
|
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
1934
1878
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace) &&
|
@@ -2240,7 +2184,10 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
|
|
2240
2184
|
// Use the ConfigSelector to determine the config for the call.
|
2241
2185
|
ConfigSelector::CallConfig call_config =
|
2242
2186
|
config_selector->GetCallConfig({&path_, initial_metadata, arena_});
|
2243
|
-
if (!
|
2187
|
+
if (!call_config.status.ok()) {
|
2188
|
+
return absl_status_to_grpc_error(MaybeRewriteIllegalStatusCode(
|
2189
|
+
std::move(call_config.status), "ConfigSelector"));
|
2190
|
+
}
|
2244
2191
|
// Create a ClientChannelServiceConfigCallData for the call. This stores
|
2245
2192
|
// a ref to the ServiceConfig and caches the right set of parsed configs
|
2246
2193
|
// to use for the call. The ClientChannelServiceConfigCallData will store
|
@@ -2270,17 +2217,13 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
|
|
2270
2217
|
}
|
2271
2218
|
// If the service config set wait_for_ready and the application
|
2272
2219
|
// did not explicitly set it, use the value from the service config.
|
2273
|
-
|
2274
|
-
|
2275
|
-
|
2220
|
+
auto* wait_for_ready =
|
2221
|
+
pending_batches_[0]
|
2222
|
+
->payload->send_initial_metadata.send_initial_metadata
|
2223
|
+
->GetOrCreatePointer(WaitForReady());
|
2276
2224
|
if (method_params->wait_for_ready().has_value() &&
|
2277
|
-
!
|
2278
|
-
|
2279
|
-
if (method_params->wait_for_ready().value()) {
|
2280
|
-
*send_initial_metadata_flags |= GRPC_INITIAL_METADATA_WAIT_FOR_READY;
|
2281
|
-
} else {
|
2282
|
-
*send_initial_metadata_flags &= ~GRPC_INITIAL_METADATA_WAIT_FOR_READY;
|
2283
|
-
}
|
2225
|
+
!wait_for_ready->explicitly_set) {
|
2226
|
+
wait_for_ready->value = method_params->wait_for_ready().value();
|
2284
2227
|
}
|
2285
2228
|
}
|
2286
2229
|
// Set the dynamic filter stack.
|
@@ -2388,16 +2331,14 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
|
|
2388
2331
|
pending_batches_[0]->payload->send_initial_metadata;
|
2389
2332
|
grpc_metadata_batch* initial_metadata_batch =
|
2390
2333
|
send_initial_metadata.send_initial_metadata;
|
2391
|
-
const uint32_t send_initial_metadata_flags =
|
2392
|
-
send_initial_metadata.send_initial_metadata_flags;
|
2393
2334
|
// If we don't yet have a resolver result, we need to queue the call
|
2394
2335
|
// until we get one.
|
2395
2336
|
if (GPR_UNLIKELY(!chand->received_service_config_data_)) {
|
2396
2337
|
// If the resolver returned transient failure before returning the
|
2397
2338
|
// first service config, fail any non-wait_for_ready calls.
|
2398
2339
|
absl::Status resolver_error = chand->resolver_transient_failure_error_;
|
2399
|
-
if (!resolver_error.ok() &&
|
2400
|
-
|
2340
|
+
if (!resolver_error.ok() &&
|
2341
|
+
!initial_metadata_batch->GetOrCreatePointer(WaitForReady())->value) {
|
2401
2342
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2402
2343
|
gpr_log(GPR_INFO, "chand=%p calld=%p: resolution failed, failing call",
|
2403
2344
|
chand, this);
|
@@ -2795,8 +2736,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2795
2736
|
}
|
2796
2737
|
if (batch->send_initial_metadata) {
|
2797
2738
|
call_attempt_tracer_->RecordSendInitialMetadata(
|
2798
|
-
batch->payload->send_initial_metadata.send_initial_metadata
|
2799
|
-
batch->payload->send_initial_metadata.send_initial_metadata_flags);
|
2739
|
+
batch->payload->send_initial_metadata.send_initial_metadata);
|
2800
2740
|
peer_string_ = batch->payload->send_initial_metadata.peer_string;
|
2801
2741
|
original_send_initial_metadata_on_complete_ = batch->on_complete;
|
2802
2742
|
GRPC_CLOSURE_INIT(&send_initial_metadata_on_complete_,
|
@@ -3171,8 +3111,6 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3171
3111
|
pending_batches_[0]->payload->send_initial_metadata;
|
3172
3112
|
grpc_metadata_batch* initial_metadata_batch =
|
3173
3113
|
send_initial_metadata.send_initial_metadata;
|
3174
|
-
const uint32_t send_initial_metadata_flags =
|
3175
|
-
send_initial_metadata.send_initial_metadata_flags;
|
3176
3114
|
// Perform LB pick.
|
3177
3115
|
LoadBalancingPolicy::PickArgs pick_args;
|
3178
3116
|
pick_args.path = path_.as_string_view();
|
@@ -3230,7 +3168,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3230
3168
|
return false;
|
3231
3169
|
},
|
3232
3170
|
// FailPick
|
3233
|
-
[this,
|
3171
|
+
[this, initial_metadata_batch,
|
3234
3172
|
&error](LoadBalancingPolicy::PickResult::Fail* fail_pick)
|
3235
3173
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
|
3236
3174
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
@@ -3239,13 +3177,10 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3239
3177
|
}
|
3240
3178
|
// If wait_for_ready is false, then the error indicates the RPC
|
3241
3179
|
// attempt's final status.
|
3242
|
-
if ((
|
3243
|
-
|
3244
|
-
|
3245
|
-
|
3246
|
-
*error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
3247
|
-
"Failed to pick subchannel", &lb_error, 1);
|
3248
|
-
GRPC_ERROR_UNREF(lb_error);
|
3180
|
+
if (!initial_metadata_batch->GetOrCreatePointer(WaitForReady())
|
3181
|
+
->value) {
|
3182
|
+
*error = absl_status_to_grpc_error(MaybeRewriteIllegalStatusCode(
|
3183
|
+
std::move(fail_pick->status), "LB pick"));
|
3249
3184
|
MaybeRemoveCallFromLbQueuedCallsLocked();
|
3250
3185
|
return true;
|
3251
3186
|
}
|
@@ -3261,9 +3196,10 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3261
3196
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick dropped: %s",
|
3262
3197
|
chand_, this, drop_pick->status.ToString().c_str());
|
3263
3198
|
}
|
3264
|
-
*error =
|
3265
|
-
|
3266
|
-
|
3199
|
+
*error = grpc_error_set_int(
|
3200
|
+
absl_status_to_grpc_error(MaybeRewriteIllegalStatusCode(
|
3201
|
+
std::move(drop_pick->status), "LB drop")),
|
3202
|
+
GRPC_ERROR_INT_LB_POLICY_DROP, 1);
|
3267
3203
|
MaybeRemoveCallFromLbQueuedCallsLocked();
|
3268
3204
|
return true;
|
3269
3205
|
});
|