grpc 1.48.0 → 1.49.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +104 -41
- data/include/grpc/event_engine/event_engine.h +19 -16
- data/include/grpc/impl/codegen/grpc_types.h +3 -8
- data/include/grpc/impl/codegen/port_platform.h +0 -8
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +3 -3
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +2 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +117 -200
- data/src/core/ext/filters/client_channel/client_channel.h +15 -8
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +0 -29
- data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -10
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.h +12 -4
- data/src/core/ext/filters/client_channel/connector.h +4 -5
- data/src/core/ext/filters/client_channel/http_proxy.cc +53 -65
- data/src/core/ext/filters/client_channel/http_proxy.h +12 -9
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +14 -12
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +6 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +100 -124
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +12 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +5 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +169 -63
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +25 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +15 -19
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +66 -78
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +44 -44
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +6 -5
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +65 -77
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +15 -14
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +19 -14
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +60 -67
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +40 -49
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +81 -97
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +53 -61
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +171 -102
- data/src/core/ext/filters/client_channel/proxy_mapper.h +13 -14
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +19 -16
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +8 -7
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +4 -8
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +431 -145
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +170 -99
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +20 -7
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +17 -15
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +7 -17
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +11 -0
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +13 -14
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +3 -4
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +5 -6
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -13
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +162 -165
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +37 -30
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +7 -10
- data/src/core/ext/filters/client_channel/retry_filter.cc +0 -7
- data/src/core/ext/filters/client_channel/retry_service_config.cc +30 -19
- data/src/core/ext/filters/client_channel/retry_service_config.h +6 -9
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +6 -7
- data/src/core/ext/filters/client_channel/subchannel.cc +49 -89
- data/src/core/ext/filters/client_channel/subchannel.h +8 -8
- data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +1 -1
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +6 -76
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +16 -25
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +3 -4
- data/src/core/ext/filters/deadline/deadline_filter.cc +6 -6
- data/src/core/ext/filters/deadline/deadline_filter.h +2 -3
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -3
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +1 -1
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +17 -12
- data/src/core/ext/filters/fault_injection/service_config_parser.h +4 -5
- data/src/core/ext/filters/http/client/http_client_filter.cc +2 -3
- data/src/core/ext/filters/http/client/http_client_filter.h +1 -1
- data/src/core/ext/filters/http/client_authority_filter.cc +1 -2
- data/src/core/ext/filters/http/client_authority_filter.h +1 -1
- data/src/core/ext/filters/http/server/http_server_filter.cc +2 -3
- data/src/core/ext/filters/http/server/http_server_filter.h +1 -1
- data/src/core/ext/filters/message_size/message_size_filter.cc +13 -7
- data/src/core/ext/filters/message_size/message_size_filter.h +3 -6
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +16 -12
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +4 -6
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +5 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +3 -5
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +35 -62
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +62 -89
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +4 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +130 -165
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +3 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +67 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -0
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +7 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +25 -8
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +4 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +0 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +8 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +2 -10
- data/src/core/ext/transport/chttp2/transport/internal.h +2 -1
- data/src/core/ext/transport/inproc/inproc_transport.cc +40 -74
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +24 -8
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +8 -327
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +83 -1723
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +352 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +1768 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +6 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +33 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -3
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +14 -14
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +90 -30
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +21 -19
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +124 -34
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +23 -22
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +153 -48
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +11 -11
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +84 -28
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +25 -23
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +156 -48
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +12 -12
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +78 -26
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +54 -18
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +21 -20
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +117 -44
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +36 -12
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +37 -13
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +170 -15
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +7 -4
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +36 -4
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +6 -6
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +48 -16
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +54 -18
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +21 -9
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +100 -14
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +7 -22
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +36 -77
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +121 -76
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +647 -163
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +34 -15
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +161 -22
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +98 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +1 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +11 -4
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +58 -4
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +35 -27
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +177 -52
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +10 -8
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +66 -14
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +131 -16
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +632 -12
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +24 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +24 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +202 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +6 -2
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -1
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +11 -11
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +66 -22
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +9 -9
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +72 -24
- data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
- data/src/core/ext/upb-generated/google/api/http.upb.h +18 -6
- data/src/core/ext/upb-generated/google/api/httpbody.upb.c +1 -1
- data/src/core/ext/upb-generated/google/api/httpbody.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +44 -43
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +177 -55
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +2 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +18 -6
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +6 -6
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +54 -18
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +6 -2
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +2 -2
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +24 -8
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +6 -2
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +7 -7
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +60 -20
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +1 -1
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +6 -6
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +54 -18
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +2 -2
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +7 -7
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +42 -14
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +23 -11
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -3
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +7 -3
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -3
- data/src/core/ext/upb-generated/validate/validate.upb.c +22 -22
- data/src/core/ext/upb-generated/validate/validate.upb.h +139 -47
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +23 -11
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +7 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +27 -11
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +7 -3
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +2 -2
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +6 -6
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +54 -18
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +2 -2
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +6 -2
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +67 -274
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +0 -85
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +256 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +115 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +14 -11
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +107 -107
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +191 -187
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +156 -154
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +186 -183
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +136 -134
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +16 -16
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +162 -139
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +39 -31
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +12 -8
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +72 -75
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +0 -5
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +713 -670
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +150 -139
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +47 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +16 -12
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +46 -25
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +477 -466
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +21 -18
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +153 -84
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +113 -113
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +29 -28
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +69 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +92 -90
- data/src/core/ext/xds/upb_utils.h +0 -21
- data/src/core/ext/xds/xds_api.cc +53 -86
- data/src/core/ext/xds/xds_api.h +19 -28
- data/src/core/ext/xds/xds_bootstrap.cc +39 -52
- data/src/core/ext/xds/xds_bootstrap.h +28 -8
- data/src/core/ext/xds/xds_certificate_provider.h +9 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +6 -4
- data/src/core/ext/xds/xds_channel_stack_modifier.h +8 -0
- data/src/core/ext/xds/xds_client.cc +555 -1214
- data/src/core/ext/xds/xds_client.h +16 -44
- data/src/core/ext/xds/xds_client_grpc.cc +291 -0
- data/src/core/ext/xds/xds_client_grpc.h +102 -0
- data/src/core/ext/xds/xds_cluster.cc +92 -103
- data/src/core/ext/xds/xds_cluster.h +6 -5
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +10 -14
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +1 -0
- data/src/core/ext/xds/xds_common_types.cc +134 -110
- data/src/core/ext/xds/xds_common_types.h +6 -7
- data/src/core/ext/xds/xds_endpoint.cc +80 -80
- data/src/core/ext/xds/xds_endpoint.h +4 -4
- data/src/core/ext/xds/xds_http_fault_filter.cc +4 -11
- data/src/core/ext/xds/xds_http_fault_filter.h +3 -3
- data/src/core/ext/xds/xds_http_filters.h +3 -3
- data/src/core/ext/xds/xds_http_rbac_filter.cc +39 -58
- data/src/core/ext/xds/xds_http_rbac_filter.h +3 -3
- data/src/core/ext/xds/xds_lb_policy_registry.cc +17 -20
- data/src/core/ext/xds/xds_lb_policy_registry.h +4 -4
- data/src/core/ext/xds/xds_listener.cc +329 -299
- data/src/core/ext/xds/xds_listener.h +4 -4
- data/src/core/ext/xds/xds_resource_type.h +13 -2
- data/src/core/ext/xds/xds_route_config.cc +180 -177
- data/src/core/ext/xds/xds_route_config.h +31 -17
- data/src/core/ext/xds/xds_routing.cc +3 -6
- data/src/core/ext/xds/xds_routing.h +7 -9
- data/src/core/ext/xds/xds_server_config_fetcher.cc +76 -81
- data/src/core/ext/xds/xds_transport.h +86 -0
- data/src/core/ext/xds/xds_transport_grpc.cc +349 -0
- data/src/core/ext/xds/xds_transport_grpc.h +135 -0
- data/src/core/lib/address_utils/parse_address.cc +19 -17
- data/src/core/lib/address_utils/parse_address.h +8 -5
- data/src/core/lib/avl/avl.h +47 -25
- data/src/core/lib/channel/call_tracer.h +1 -1
- data/src/core/lib/channel/channel_args.cc +88 -19
- data/src/core/lib/channel/channel_args.h +113 -62
- data/src/core/lib/channel/channel_stack.cc +0 -1
- data/src/core/lib/channel/channel_stack_builder.cc +3 -3
- data/src/core/lib/channel/channel_stack_builder.h +2 -2
- data/src/core/lib/channel/channel_stack_builder_impl.cc +2 -4
- data/src/core/lib/channel/channelz.cc +27 -37
- data/src/core/lib/channel/channelz.h +9 -0
- data/src/core/lib/channel/promise_based_filter.h +0 -1
- data/src/core/lib/config/core_configuration.h +48 -35
- data/src/core/lib/debug/stats.cc +12 -15
- data/src/core/lib/debug/stats.h +11 -3
- data/src/core/lib/event_engine/{event_engine.cc → default_event_engine.cc} +9 -5
- data/src/core/lib/event_engine/{event_engine_factory.h → default_event_engine.h} +4 -8
- data/src/core/lib/event_engine/default_event_engine_factory.cc +20 -3
- data/src/core/lib/event_engine/default_event_engine_factory.h +33 -0
- data/src/core/lib/event_engine/executor/executor.h +38 -0
- data/src/core/lib/event_engine/executor/threaded_executor.cc +36 -0
- data/src/core/lib/event_engine/executor/threaded_executor.h +44 -0
- data/src/core/lib/event_engine/forkable.cc +98 -0
- data/src/core/lib/event_engine/forkable.h +61 -0
- data/src/core/lib/event_engine/poller.h +54 -0
- data/src/core/lib/event_engine/{iomgr_engine/iomgr_engine.cc → posix_engine/posix_engine.cc} +30 -47
- data/src/core/lib/event_engine/{iomgr_engine/iomgr_engine.h → posix_engine/posix_engine.h} +27 -28
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer.cc +4 -5
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer.h +8 -8
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_heap.cc +4 -4
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_heap.h +5 -5
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_manager.cc +46 -10
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_manager.h +17 -8
- data/src/core/lib/event_engine/promise.h +11 -2
- data/src/core/lib/event_engine/socket_notifier.h +55 -0
- data/src/core/lib/event_engine/{iomgr_engine/thread_pool.cc → thread_pool.cc} +49 -14
- data/src/core/lib/event_engine/{iomgr_engine/thread_pool.h → thread_pool.h} +21 -10
- data/src/core/lib/event_engine/utils.cc +49 -0
- data/src/core/lib/event_engine/utils.h +40 -0
- data/src/core/lib/event_engine/windows/iocp.cc +149 -0
- data/src/core/lib/event_engine/windows/iocp.h +68 -0
- data/src/core/lib/event_engine/windows/win_socket.cc +196 -0
- data/src/core/lib/event_engine/windows/win_socket.h +120 -0
- data/src/core/lib/event_engine/windows/windows_engine.cc +159 -0
- data/src/core/lib/event_engine/windows/windows_engine.h +120 -0
- data/src/core/lib/gpr/time.cc +11 -9
- data/src/core/lib/gpr/useful.h +29 -0
- data/src/core/lib/gprpp/bitset.h +3 -13
- data/src/core/lib/gprpp/debug_location.h +39 -7
- data/src/core/lib/gprpp/manual_constructor.h +0 -1
- data/src/core/lib/gprpp/no_destruct.h +94 -0
- data/src/core/lib/gprpp/ref_counted_ptr.h +0 -1
- data/src/core/lib/gprpp/status_helper.cc +1 -0
- data/src/core/lib/gprpp/table.h +0 -1
- data/src/core/lib/{event_engine/iomgr_engine → gprpp}/time_averaged_stats.cc +3 -5
- data/src/core/lib/{event_engine/iomgr_engine → gprpp}/time_averaged_stats.h +5 -7
- data/src/core/lib/{iomgr → gprpp}/work_serializer.cc +34 -18
- data/src/core/lib/{iomgr → gprpp}/work_serializer.h +21 -27
- data/src/core/lib/http/httpcli.cc +12 -24
- data/src/core/lib/http/httpcli_security_connector.cc +11 -11
- data/src/core/lib/iomgr/call_combiner.cc +0 -26
- data/src/core/lib/iomgr/closure.h +0 -9
- data/src/core/lib/iomgr/combiner.cc +0 -20
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
- data/src/core/lib/iomgr/error.cc +0 -773
- data/src/core/lib/iomgr/error.h +0 -145
- data/src/core/lib/iomgr/error_cfstream.cc +0 -5
- data/src/core/lib/iomgr/ev_poll_posix.cc +17 -9
- data/src/core/lib/iomgr/exec_ctx.cc +0 -12
- data/src/core/lib/iomgr/executor.cc +0 -10
- data/src/core/lib/iomgr/executor.h +0 -3
- data/src/core/lib/iomgr/lockfree_event.cc +0 -17
- data/src/core/lib/iomgr/port.h +3 -0
- data/src/core/lib/iomgr/resolve_address.h +29 -6
- data/src/core/lib/iomgr/resolve_address_posix.cc +38 -8
- data/src/core/lib/iomgr/resolve_address_posix.h +19 -5
- data/src/core/lib/iomgr/resolve_address_windows.cc +40 -10
- data/src/core/lib/iomgr/resolve_address_windows.h +19 -5
- data/src/core/lib/iomgr/socket_windows.h +0 -2
- data/src/core/lib/iomgr/tcp_posix.cc +118 -6
- data/src/core/lib/iomgr/timer_generic.cc +6 -8
- data/src/core/lib/json/json.h +19 -22
- data/src/core/lib/json/json_args.h +34 -0
- data/src/core/lib/json/json_object_loader.cc +233 -0
- data/src/core/lib/json/json_object_loader.h +618 -0
- data/src/core/lib/json/json_reader.cc +86 -62
- data/src/core/lib/json/json_util.cc +8 -36
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.cc +3 -44
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.h +15 -24
- data/src/core/lib/load_balancing/lb_policy_factory.h +49 -0
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy_registry.cc +49 -72
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy_registry.h +27 -27
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/subchannel_interface.h +6 -6
- data/src/core/lib/promise/activity.h +56 -8
- data/src/core/lib/promise/arena_promise.h +84 -81
- data/src/core/lib/promise/context.h +0 -1
- data/src/core/lib/promise/detail/basic_seq.h +43 -23
- data/src/core/lib/promise/detail/promise_factory.h +0 -1
- data/src/core/lib/promise/map.h +0 -1
- data/src/core/lib/promise/seq.h +25 -4
- data/src/core/lib/promise/sleep.cc +38 -42
- data/src/core/lib/promise/sleep.h +27 -24
- data/src/core/lib/promise/try_seq.h +26 -6
- data/src/core/lib/resolver/resolver.cc +0 -47
- data/src/core/lib/resolver/resolver.h +2 -12
- data/src/core/lib/resolver/resolver_factory.h +2 -3
- data/src/core/lib/resolver/resolver_registry.cc +1 -1
- data/src/core/lib/resolver/resolver_registry.h +2 -3
- data/src/core/lib/resolver/server_address.cc +11 -15
- data/src/core/lib/resolver/server_address.h +4 -8
- data/src/core/lib/resource_quota/api.cc +1 -1
- data/src/core/lib/resource_quota/arena.cc +21 -1
- data/src/core/lib/resource_quota/arena.h +24 -2
- data/src/core/lib/resource_quota/memory_quota.cc +157 -17
- data/src/core/lib/resource_quota/memory_quota.h +98 -17
- data/src/core/lib/resource_quota/periodic_update.cc +79 -0
- data/src/core/lib/resource_quota/periodic_update.h +71 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +10 -7
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -2
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -1
- data/src/core/lib/security/authorization/matchers.cc +13 -10
- data/src/core/lib/security/authorization/rbac_policy.cc +0 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -3
- data/src/core/lib/security/credentials/alts/alts_credentials.h +3 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +3 -7
- data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -4
- data/src/core/lib/security/credentials/credentials.h +16 -12
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +18 -11
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +32 -23
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -6
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +4 -6
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +3 -12
- data/src/core/lib/security/credentials/fake/fake_credentials.h +0 -4
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +29 -26
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +1 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +0 -1
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +3 -3
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +3 -4
- data/src/core/lib/security/credentials/jwt/json_token.cc +12 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +4 -8
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +11 -13
- data/src/core/lib/security/credentials/local/local_credentials.cc +3 -4
- data/src/core/lib/security/credentials/local/local_credentials.h +3 -4
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +17 -18
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +0 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +13 -21
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +3 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +6 -0
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +13 -25
- data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -4
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +13 -30
- data/src/core/lib/security/credentials/xds/xds_credentials.h +3 -3
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +10 -18
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +26 -38
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +5 -5
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +6 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +13 -11
- data/src/core/lib/security/security_connector/local/local_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/security_connector.h +5 -3
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +5 -4
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +5 -5
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +5 -5
- data/src/core/lib/security/transport/auth_filters.h +1 -1
- data/src/core/lib/security/transport/client_auth_filter.cc +3 -4
- data/src/core/lib/security/transport/security_handshaker.cc +32 -44
- data/src/core/lib/security/transport/security_handshaker.h +2 -1
- data/src/core/lib/service_config/service_config.h +11 -0
- data/src/core/lib/service_config/service_config_impl.cc +98 -97
- data/src/core/lib/service_config/service_config_impl.h +11 -13
- data/src/core/lib/service_config/service_config_parser.cc +26 -27
- data/src/core/lib/service_config/service_config_parser.h +10 -22
- data/src/core/lib/slice/percent_encoding.cc +4 -13
- data/src/core/lib/slice/slice.cc +10 -4
- data/src/core/lib/surface/call.cc +8 -2
- data/src/core/lib/surface/channel.cc +6 -6
- data/src/core/lib/surface/channel.h +1 -1
- data/src/core/lib/surface/completion_queue.cc +0 -2
- data/src/core/lib/surface/completion_queue.h +0 -3
- data/src/core/lib/surface/init.cc +2 -6
- data/src/core/lib/surface/lame_client.cc +2 -3
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +7 -12
- data/src/core/lib/surface/server.h +7 -7
- data/src/core/lib/surface/validate_metadata.cc +4 -14
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/connectivity_state.cc +0 -1
- data/src/core/lib/transport/connectivity_state.h +1 -1
- data/src/core/lib/transport/error_utils.cc +0 -36
- data/src/core/lib/transport/handshaker.cc +7 -9
- data/src/core/lib/transport/handshaker.h +4 -5
- data/src/core/lib/transport/handshaker_factory.h +2 -3
- data/src/core/lib/transport/handshaker_registry.cc +2 -1
- data/src/core/lib/transport/handshaker_registry.h +2 -4
- data/src/core/lib/transport/http_connect_handshaker.cc +16 -16
- data/src/core/lib/transport/metadata_batch.cc +5 -0
- data/src/core/lib/transport/metadata_batch.h +52 -7
- data/src/core/lib/transport/parsed_metadata.h +0 -1
- data/src/core/lib/transport/tcp_connect_handshaker.cc +12 -18
- data/src/core/lib/transport/transport.h +0 -7
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +40 -21
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +14 -7
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +1 -1
- data/src/core/tsi/fake_transport_security.cc +53 -30
- data/src/core/tsi/local_transport_security.cc +9 -5
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +10 -1
- data/src/core/tsi/ssl_transport_security.cc +47 -23
- data/src/core/tsi/transport_security.cc +18 -6
- data/src/core/tsi/transport_security.h +2 -1
- data/src/core/tsi/transport_security_interface.h +17 -5
- data/src/ruby/ext/grpc/extconf.rb +2 -0
- data/src/ruby/ext/grpc/rb_loader.c +6 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -0
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +313 -0
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +857 -0
- data/third_party/upb/third_party/utf8_range/utf8_range.h +1 -1
- data/third_party/upb/upb/arena.c +277 -0
- data/third_party/upb/upb/arena.h +225 -0
- data/third_party/upb/upb/array.c +114 -0
- data/third_party/upb/upb/array.h +83 -0
- data/third_party/upb/upb/collections.h +36 -0
- data/third_party/upb/upb/decode.c +161 -65
- data/third_party/upb/upb/decode.h +1 -0
- data/third_party/upb/upb/decode_fast.c +1 -1
- data/third_party/upb/upb/def.c +10 -2
- data/third_party/upb/upb/def.h +8 -1
- data/third_party/upb/upb/def.hpp +7 -4
- data/third_party/upb/upb/encode.c +29 -20
- data/third_party/upb/upb/encode.h +16 -6
- data/third_party/upb/upb/extension_registry.c +93 -0
- data/third_party/upb/upb/extension_registry.h +84 -0
- data/third_party/upb/upb/{decode_internal.h → internal/decode.h} +5 -5
- data/third_party/upb/upb/internal/table.h +385 -0
- data/third_party/upb/upb/{upb_internal.h → internal/upb.h} +3 -3
- data/third_party/upb/upb/internal/vsnprintf_compat.h +52 -0
- data/third_party/upb/upb/json_decode.c +1512 -0
- data/third_party/upb/upb/json_decode.h +47 -0
- data/third_party/upb/upb/json_encode.c +7 -3
- data/third_party/upb/upb/json_encode.h +6 -3
- data/third_party/upb/upb/map.c +108 -0
- data/third_party/upb/upb/map.h +117 -0
- data/third_party/upb/upb/message_value.h +66 -0
- data/third_party/upb/upb/mini_table.c +1147 -0
- data/third_party/upb/upb/mini_table.h +189 -0
- data/third_party/upb/upb/mini_table.hpp +112 -0
- data/third_party/upb/upb/msg.c +2 -62
- data/third_party/upb/upb/msg.h +2 -45
- data/third_party/upb/upb/msg_internal.h +28 -22
- data/third_party/upb/upb/port_def.inc +2 -1
- data/third_party/upb/upb/port_undef.inc +1 -0
- data/third_party/upb/upb/reflection.c +2 -159
- data/third_party/upb/upb/reflection.h +2 -112
- data/third_party/upb/upb/status.c +86 -0
- data/third_party/upb/upb/status.h +66 -0
- data/third_party/upb/upb/table.c +2 -2
- data/third_party/upb/upb/table_internal.h +3 -352
- data/third_party/upb/upb/text_encode.c +3 -2
- data/third_party/upb/upb/upb.c +4 -290
- data/third_party/upb/upb/upb.h +7 -196
- metadata +90 -38
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -50
- data/src/core/lib/iomgr/error_internal.h +0 -66
- data/src/core/lib/iomgr/executor/mpmcqueue.cc +0 -182
- data/src/core/lib/iomgr/executor/mpmcqueue.h +0 -171
- data/src/core/lib/iomgr/executor/threadpool.cc +0 -136
- data/src/core/lib/iomgr/executor/threadpool.h +0 -150
- data/src/core/lib/iomgr/time_averaged_stats.cc +0 -64
- data/src/core/lib/iomgr/time_averaged_stats.h +0 -72
- data/src/core/lib/promise/detail/switch.h +0 -1455
@@ -48,14 +48,6 @@
|
|
48
48
|
#endif
|
49
49
|
#endif // GPR_ABSEIL_SYNC
|
50
50
|
|
51
|
-
/*
|
52
|
-
* Defines GRPC_ERROR_IS_NOT_ABSEIL_STATUS to not use absl::Status for
|
53
|
-
* grpc_error_handle. This is a temporary knob for migration process.
|
54
|
-
*/
|
55
|
-
#ifndef GRPC_ERROR_IS_NOT_ABSEIL_STATUS
|
56
|
-
#define GRPC_ERROR_IS_ABSEIL_STATUS 1
|
57
|
-
#endif
|
58
|
-
|
59
51
|
/* Get windows.h included everywhere (we need it) */
|
60
52
|
#if defined(_WIN64) || defined(WIN64) || defined(_WIN32) || defined(WIN32)
|
61
53
|
#ifndef WIN32_LEAN_AND_MEAN
|
@@ -96,7 +96,7 @@ struct MaxAgeFilter::Config {
|
|
96
96
|
connection storms. Note that the MAX_CONNECTION_AGE option without jitter
|
97
97
|
would not create connection storms by itself, but if there happened to be a
|
98
98
|
connection storm it could cause it to repeat at a fixed period. */
|
99
|
-
static Config FromChannelArgs(ChannelArgs args) {
|
99
|
+
static Config FromChannelArgs(const ChannelArgs& args) {
|
100
100
|
const Duration args_max_age =
|
101
101
|
args.GetDurationFromIntMillis(GRPC_ARG_MAX_CONNECTION_AGE_MS)
|
102
102
|
.value_or(kDefaultMaxConnectionAge);
|
@@ -118,14 +118,14 @@ struct MaxAgeFilter::Config {
|
|
118
118
|
};
|
119
119
|
|
120
120
|
absl::StatusOr<ClientIdleFilter> ClientIdleFilter::Create(
|
121
|
-
ChannelArgs args, ChannelFilter::Args filter_args) {
|
121
|
+
const ChannelArgs& args, ChannelFilter::Args filter_args) {
|
122
122
|
ClientIdleFilter filter(filter_args.channel_stack(),
|
123
123
|
GetClientIdleTimeout(args));
|
124
124
|
return absl::StatusOr<ClientIdleFilter>(std::move(filter));
|
125
125
|
}
|
126
126
|
|
127
127
|
absl::StatusOr<MaxAgeFilter> MaxAgeFilter::Create(
|
128
|
-
ChannelArgs args, ChannelFilter::Args filter_args) {
|
128
|
+
const ChannelArgs& args, ChannelFilter::Args filter_args) {
|
129
129
|
MaxAgeFilter filter(filter_args.channel_stack(),
|
130
130
|
Config::FromChannelArgs(args));
|
131
131
|
return absl::StatusOr<MaxAgeFilter>(std::move(filter));
|
@@ -94,7 +94,7 @@ class ClientIdleFilter final : public ChannelIdleFilter {
|
|
94
94
|
static const grpc_channel_filter kFilter;
|
95
95
|
|
96
96
|
static absl::StatusOr<ClientIdleFilter> Create(
|
97
|
-
ChannelArgs args, ChannelFilter::Args filter_args);
|
97
|
+
const ChannelArgs& args, ChannelFilter::Args filter_args);
|
98
98
|
|
99
99
|
private:
|
100
100
|
using ChannelIdleFilter::ChannelIdleFilter;
|
@@ -105,7 +105,7 @@ class MaxAgeFilter final : public ChannelIdleFilter {
|
|
105
105
|
static const grpc_channel_filter kFilter;
|
106
106
|
struct Config;
|
107
107
|
|
108
|
-
static absl::StatusOr<MaxAgeFilter> Create(ChannelArgs args,
|
108
|
+
static absl::StatusOr<MaxAgeFilter> Create(const ChannelArgs& args,
|
109
109
|
ChannelFilter::Args filter_args);
|
110
110
|
|
111
111
|
void PostInit() override;
|
@@ -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,13 +51,11 @@
|
|
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
55
|
#include "src/core/ext/filters/client_channel/proxy_mapper_registry.h"
|
60
56
|
#include "src/core/ext/filters/client_channel/resolver_result_parsing.h"
|
61
57
|
#include "src/core/ext/filters/client_channel/retry_filter.h"
|
62
58
|
#include "src/core/ext/filters/client_channel/subchannel.h"
|
63
|
-
#include "src/core/ext/filters/client_channel/subchannel_interface.h"
|
64
59
|
#include "src/core/ext/filters/client_channel/subchannel_interface_internal.h"
|
65
60
|
#include "src/core/ext/filters/deadline/deadline_filter.h"
|
66
61
|
#include "src/core/lib/channel/channel_args.h"
|
@@ -71,11 +66,13 @@
|
|
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"
|
74
70
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
75
71
|
#include "src/core/lib/iomgr/polling_entity.h"
|
76
72
|
#include "src/core/lib/iomgr/pollset_set.h"
|
77
|
-
#include "src/core/lib/iomgr/work_serializer.h"
|
78
73
|
#include "src/core/lib/json/json.h"
|
74
|
+
#include "src/core/lib/load_balancing/lb_policy_registry.h"
|
75
|
+
#include "src/core/lib/load_balancing/subchannel_interface.h"
|
79
76
|
#include "src/core/lib/profiling/timers.h"
|
80
77
|
#include "src/core/lib/resolver/resolver_registry.h"
|
81
78
|
#include "src/core/lib/resolver/server_address.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);
|
@@ -879,67 +852,23 @@ class ClientChannel::ClientChannelControlHelper
|
|
879
852
|
}
|
880
853
|
|
881
854
|
RefCountedPtr<SubchannelInterface> CreateSubchannel(
|
882
|
-
ServerAddress address, const
|
855
|
+
ServerAddress address, const ChannelArgs& args) override
|
883
856
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
884
857
|
if (chand_->resolver_ == nullptr) return nullptr; // Shutting down.
|
885
858
|
// Determine health check service name.
|
886
859
|
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
|
-
}
|
860
|
+
if (!args.GetBool(GRPC_ARG_INHIBIT_HEALTH_CHECKING).value_or(false)) {
|
861
|
+
health_check_service_name =
|
862
|
+
args.GetOwnedString(GRPC_ARG_HEALTH_CHECK_SERVICE_NAME);
|
895
863
|
}
|
896
864
|
// 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());
|
865
|
+
ChannelArgs subchannel_args = ClientChannel::MakeSubchannelArgs(
|
866
|
+
args, address.args(), chand_->subchannel_pool_,
|
867
|
+
chand_->default_authority_);
|
938
868
|
// Create subchannel.
|
939
869
|
RefCountedPtr<Subchannel> subchannel =
|
940
870
|
chand_->client_channel_factory_->CreateSubchannel(address.address(),
|
941
|
-
|
942
|
-
grpc_channel_args_destroy(new_args);
|
871
|
+
subchannel_args);
|
943
872
|
if (subchannel == nullptr) return nullptr;
|
944
873
|
// Make sure the subchannel has updated keepalive time.
|
945
874
|
subchannel->ThrottleKeepaliveTime(chand_->keepalive_time_);
|
@@ -1030,36 +959,28 @@ void ClientChannel::Destroy(grpc_channel_element* elem) {
|
|
1030
959
|
namespace {
|
1031
960
|
|
1032
961
|
RefCountedPtr<SubchannelPoolInterface> GetSubchannelPool(
|
1033
|
-
const
|
1034
|
-
|
1035
|
-
args, GRPC_ARG_USE_LOCAL_SUBCHANNEL_POOL, false);
|
1036
|
-
if (use_local_subchannel_pool) {
|
962
|
+
const ChannelArgs& args) {
|
963
|
+
if (args.GetBool(GRPC_ARG_USE_LOCAL_SUBCHANNEL_POOL).value_or(false)) {
|
1037
964
|
return MakeRefCounted<LocalSubchannelPool>();
|
1038
965
|
}
|
1039
966
|
return GlobalSubchannelPool::instance();
|
1040
967
|
}
|
1041
968
|
|
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
969
|
} // namespace
|
1048
970
|
|
1049
971
|
ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
1050
972
|
grpc_error_handle* error)
|
1051
|
-
:
|
1052
|
-
|
973
|
+
: channel_args_(ChannelArgs::FromC(args->channel_args)),
|
974
|
+
deadline_checking_enabled_(grpc_deadline_checking_enabled(channel_args_)),
|
1053
975
|
owning_stack_(args->channel_stack),
|
1054
|
-
client_channel_factory_(
|
1055
|
-
|
1056
|
-
channelz_node_(GetChannelzNode(args->channel_args)),
|
976
|
+
client_channel_factory_(channel_args_.GetObject<ClientChannelFactory>()),
|
977
|
+
channelz_node_(channel_args_.GetObject<channelz::ChannelNode>()),
|
1057
978
|
interested_parties_(grpc_pollset_set_create()),
|
1058
979
|
service_config_parser_index_(
|
1059
980
|
internal::ClientChannelServiceConfigParser::ParserIndex()),
|
1060
981
|
work_serializer_(std::make_shared<WorkSerializer>()),
|
1061
982
|
state_tracker_("client_channel", GRPC_CHANNEL_IDLE),
|
1062
|
-
subchannel_pool_(GetSubchannelPool(
|
983
|
+
subchannel_pool_(GetSubchannelPool(channel_args_)) {
|
1063
984
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1064
985
|
gpr_log(GPR_INFO, "chand=%p: creating client_channel for channel stack %p",
|
1065
986
|
this, owning_stack_);
|
@@ -1074,34 +995,28 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
|
1074
995
|
}
|
1075
996
|
// Get default service config. If none is specified via the client API,
|
1076
997
|
// we use an empty config.
|
1077
|
-
|
1078
|
-
|
1079
|
-
if (service_config_json
|
998
|
+
absl::optional<absl::string_view> service_config_json =
|
999
|
+
channel_args_.GetString(GRPC_ARG_SERVICE_CONFIG);
|
1000
|
+
if (!service_config_json.has_value()) service_config_json = "{}";
|
1080
1001
|
*error = GRPC_ERROR_NONE;
|
1081
|
-
|
1082
|
-
ServiceConfigImpl::Create(
|
1083
|
-
if (!
|
1084
|
-
|
1002
|
+
auto service_config =
|
1003
|
+
ServiceConfigImpl::Create(channel_args_, *service_config_json);
|
1004
|
+
if (!service_config.ok()) {
|
1005
|
+
*error = absl_status_to_grpc_error(service_config.status());
|
1085
1006
|
return;
|
1086
1007
|
}
|
1008
|
+
default_service_config_ = std::move(*service_config);
|
1087
1009
|
// Get URI to resolve, using proxy mapper if needed.
|
1088
|
-
|
1089
|
-
|
1090
|
-
if (server_uri
|
1010
|
+
absl::optional<std::string> server_uri =
|
1011
|
+
channel_args_.GetOwnedString(GRPC_ARG_SERVER_URI);
|
1012
|
+
if (!server_uri.has_value()) {
|
1091
1013
|
*error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1092
1014
|
"target URI channel arg missing or wrong type in client channel "
|
1093
1015
|
"filter");
|
1094
1016
|
return;
|
1095
1017
|
}
|
1096
|
-
uri_to_resolve_ = server_uri
|
1097
|
-
|
1098
|
-
grpc_channel_args* new_args = nullptr;
|
1099
|
-
ProxyMapperRegistry::MapName(server_uri, args->channel_args, &proxy_name,
|
1100
|
-
&new_args);
|
1101
|
-
if (proxy_name != nullptr) {
|
1102
|
-
uri_to_resolve_ = proxy_name;
|
1103
|
-
gpr_free(proxy_name);
|
1104
|
-
}
|
1018
|
+
uri_to_resolve_ = ProxyMapperRegistry::MapName(*server_uri, &channel_args_)
|
1019
|
+
.value_or(*server_uri);
|
1105
1020
|
// Make sure the URI to resolve is valid, so that we know that
|
1106
1021
|
// resolver creation will succeed later.
|
1107
1022
|
if (!CoreConfiguration::Get().resolver_registry().IsValidTarget(
|
@@ -1112,23 +1027,23 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
|
1112
1027
|
}
|
1113
1028
|
// Strip out service config channel arg, so that it doesn't affect
|
1114
1029
|
// 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);
|
1030
|
+
channel_args_ = channel_args_.Remove(GRPC_ARG_SERVICE_CONFIG);
|
1119
1031
|
// Set initial keepalive time.
|
1120
|
-
|
1121
|
-
|
1122
|
-
|
1032
|
+
auto keepalive_arg = channel_args_.GetInt(GRPC_ARG_KEEPALIVE_TIME_MS);
|
1033
|
+
if (keepalive_arg.has_value()) {
|
1034
|
+
keepalive_time_ = Clamp(*keepalive_arg, 1, INT_MAX);
|
1035
|
+
} else {
|
1036
|
+
keepalive_time_ = -1; // unset
|
1037
|
+
}
|
1123
1038
|
// Set default authority.
|
1124
|
-
|
1125
|
-
|
1126
|
-
if (default_authority
|
1039
|
+
absl::optional<std::string> default_authority =
|
1040
|
+
channel_args_.GetOwnedString(GRPC_ARG_DEFAULT_AUTHORITY);
|
1041
|
+
if (!default_authority.has_value()) {
|
1127
1042
|
default_authority_ =
|
1128
1043
|
CoreConfiguration::Get().resolver_registry().GetDefaultAuthority(
|
1129
|
-
server_uri);
|
1044
|
+
*server_uri);
|
1130
1045
|
} else {
|
1131
|
-
default_authority_ = default_authority;
|
1046
|
+
default_authority_ = std::move(*default_authority);
|
1132
1047
|
}
|
1133
1048
|
// Success.
|
1134
1049
|
*error = GRPC_ERROR_NONE;
|
@@ -1139,7 +1054,6 @@ ClientChannel::~ClientChannel() {
|
|
1139
1054
|
gpr_log(GPR_INFO, "chand=%p: destroying channel", this);
|
1140
1055
|
}
|
1141
1056
|
DestroyResolverAndLbPolicyLocked();
|
1142
|
-
grpc_channel_args_destroy(channel_args_);
|
1143
1057
|
// Stop backup polling.
|
1144
1058
|
grpc_client_channel_stop_backup_polling(interested_parties_);
|
1145
1059
|
grpc_pollset_set_destroy(interested_parties_);
|
@@ -1157,6 +1071,29 @@ ClientChannel::CreateLoadBalancedCall(
|
|
1157
1071
|
call_dispatch_controller, is_transparent_retry));
|
1158
1072
|
}
|
1159
1073
|
|
1074
|
+
ChannelArgs ClientChannel::MakeSubchannelArgs(
|
1075
|
+
const ChannelArgs& channel_args, const ChannelArgs& address_args,
|
1076
|
+
const RefCountedPtr<SubchannelPoolInterface>& subchannel_pool,
|
1077
|
+
const std::string& channel_default_authority) {
|
1078
|
+
// Note that we start with the channel-level args and then apply the
|
1079
|
+
// per-address args, so that if a value is present in both, the one
|
1080
|
+
// in the channel-level args is used. This is particularly important
|
1081
|
+
// for the GRPC_ARG_DEFAULT_AUTHORITY arg, which we want to allow
|
1082
|
+
// resolvers to set on a per-address basis only if the application
|
1083
|
+
// did not explicitly set it at the channel level.
|
1084
|
+
return channel_args.UnionWith(address_args)
|
1085
|
+
.SetObject(subchannel_pool)
|
1086
|
+
// If we haven't already set the default authority arg (i.e., it
|
1087
|
+
// was not explicitly set by the application nor overridden by
|
1088
|
+
// the resolver), add it from the channel's default.
|
1089
|
+
.SetIfUnset(GRPC_ARG_DEFAULT_AUTHORITY, channel_default_authority)
|
1090
|
+
// Remove channel args that should not affect subchannel
|
1091
|
+
// uniqueness.
|
1092
|
+
.Remove(GRPC_ARG_HEALTH_CHECK_SERVICE_NAME)
|
1093
|
+
.Remove(GRPC_ARG_INHIBIT_HEALTH_CHECKING)
|
1094
|
+
.Remove(GRPC_ARG_CHANNELZ_CHANNEL_NODE);
|
1095
|
+
}
|
1096
|
+
|
1160
1097
|
namespace {
|
1161
1098
|
|
1162
1099
|
RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
|
@@ -1168,41 +1105,39 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
|
|
1168
1105
|
}
|
1169
1106
|
// Try the deprecated LB policy name from the service config.
|
1170
1107
|
// If not, try the setting from channel args.
|
1171
|
-
|
1108
|
+
absl::optional<absl::string_view> policy_name;
|
1172
1109
|
if (!parsed_service_config->parsed_deprecated_lb_policy().empty()) {
|
1173
|
-
policy_name = parsed_service_config->parsed_deprecated_lb_policy()
|
1110
|
+
policy_name = parsed_service_config->parsed_deprecated_lb_policy();
|
1174
1111
|
} else {
|
1175
|
-
policy_name =
|
1176
|
-
GRPC_ARG_LB_POLICY_NAME);
|
1112
|
+
policy_name = resolver_result.args.GetString(GRPC_ARG_LB_POLICY_NAME);
|
1177
1113
|
bool requires_config = false;
|
1178
|
-
if (policy_name
|
1114
|
+
if (policy_name.has_value() &&
|
1179
1115
|
(!LoadBalancingPolicyRegistry::LoadBalancingPolicyExists(
|
1180
|
-
policy_name, &requires_config) ||
|
1116
|
+
*policy_name, &requires_config) ||
|
1181
1117
|
requires_config)) {
|
1182
1118
|
if (requires_config) {
|
1183
1119
|
gpr_log(GPR_ERROR,
|
1184
1120
|
"LB policy: %s passed through channel_args must not "
|
1185
1121
|
"require a config. Using pick_first instead.",
|
1186
|
-
policy_name);
|
1122
|
+
std::string(*policy_name).c_str());
|
1187
1123
|
} else {
|
1188
1124
|
gpr_log(GPR_ERROR,
|
1189
1125
|
"LB policy: %s passed through channel_args does not exist. "
|
1190
1126
|
"Using pick_first instead.",
|
1191
|
-
policy_name);
|
1127
|
+
std::string(*policy_name).c_str());
|
1192
1128
|
}
|
1193
1129
|
policy_name = "pick_first";
|
1194
1130
|
}
|
1195
1131
|
}
|
1196
1132
|
// Use pick_first if nothing was specified and we didn't select grpclb
|
1197
1133
|
// above.
|
1198
|
-
if (policy_name
|
1134
|
+
if (!policy_name.has_value()) policy_name = "pick_first";
|
1199
1135
|
// Now that we have the policy name, construct an empty config for it.
|
1200
1136
|
Json config_json = Json::Array{Json::Object{
|
1201
|
-
{policy_name, Json::Object{}},
|
1137
|
+
{std::string(*policy_name), Json::Object{}},
|
1202
1138
|
}};
|
1203
|
-
|
1204
|
-
|
1205
|
-
config_json, &parse_error);
|
1139
|
+
auto lb_policy_config =
|
1140
|
+
LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(config_json);
|
1206
1141
|
// The policy name came from one of three places:
|
1207
1142
|
// - The deprecated loadBalancingPolicy field in the service config,
|
1208
1143
|
// in which case the code in ClientChannelServiceConfigParser
|
@@ -1212,9 +1147,8 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
|
|
1212
1147
|
// - A channel arg, in which case we check that the specified policy exists
|
1213
1148
|
// and accepts an empty config. If not, we revert to using pick_first
|
1214
1149
|
// lb_policy
|
1215
|
-
GPR_ASSERT(lb_policy_config
|
1216
|
-
|
1217
|
-
return lb_policy_config;
|
1150
|
+
GPR_ASSERT(lb_policy_config.ok());
|
1151
|
+
return std::move(*lb_policy_config);
|
1218
1152
|
}
|
1219
1153
|
|
1220
1154
|
} // namespace
|
@@ -1289,7 +1223,7 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1289
1223
|
} else {
|
1290
1224
|
// Use ServiceConfig and ConfigSelector returned by resolver.
|
1291
1225
|
service_config = std::move(*result.service_config);
|
1292
|
-
config_selector =
|
1226
|
+
config_selector = result.args.GetObjectRef<ConfigSelector>();
|
1293
1227
|
}
|
1294
1228
|
// Note: The only case in which service_config is null here is if the resolver
|
1295
1229
|
// returned a service config error and we don't have a previous service
|
@@ -1313,9 +1247,9 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1313
1247
|
// If either has changed, apply the global parameters now.
|
1314
1248
|
if (service_config_changed || config_selector_changed) {
|
1315
1249
|
// Update service config in control plane.
|
1316
|
-
UpdateServiceConfigInControlPlaneLocked(
|
1317
|
-
|
1318
|
-
|
1250
|
+
UpdateServiceConfigInControlPlaneLocked(
|
1251
|
+
std::move(service_config), std::move(config_selector),
|
1252
|
+
std::string(lb_policy_config->name()));
|
1319
1253
|
} else if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1320
1254
|
gpr_log(GPR_INFO, "chand=%p: service config not changed", this);
|
1321
1255
|
}
|
@@ -1388,22 +1322,18 @@ void ClientChannel::CreateOrUpdateLbPolicyLocked(
|
|
1388
1322
|
update_args.addresses = std::move(result.addresses);
|
1389
1323
|
update_args.config = std::move(lb_policy_config);
|
1390
1324
|
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
1325
|
// Remove the config selector from channel args so that we're not holding
|
1399
1326
|
// unnecessary refs that cause it to be destroyed somewhere other than in the
|
1400
1327
|
// WorkSerializer.
|
1401
|
-
|
1402
|
-
|
1403
|
-
|
1328
|
+
update_args.args = result.args.Remove(GRPC_ARG_CONFIG_SELECTOR);
|
1329
|
+
// Add health check service name to channel args.
|
1330
|
+
if (health_check_service_name.has_value()) {
|
1331
|
+
update_args.args = update_args.args.Set(GRPC_ARG_HEALTH_CHECK_SERVICE_NAME,
|
1332
|
+
*health_check_service_name);
|
1333
|
+
}
|
1404
1334
|
// Create policy if needed.
|
1405
1335
|
if (lb_policy_ == nullptr) {
|
1406
|
-
lb_policy_ = CreateLbPolicyLocked(
|
1336
|
+
lb_policy_ = CreateLbPolicyLocked(update_args.args);
|
1407
1337
|
}
|
1408
1338
|
// Update the policy.
|
1409
1339
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
@@ -1415,12 +1345,12 @@ void ClientChannel::CreateOrUpdateLbPolicyLocked(
|
|
1415
1345
|
|
1416
1346
|
// Creates a new LB policy.
|
1417
1347
|
OrphanablePtr<LoadBalancingPolicy> ClientChannel::CreateLbPolicyLocked(
|
1418
|
-
const
|
1348
|
+
const ChannelArgs& args) {
|
1419
1349
|
LoadBalancingPolicy::Args lb_policy_args;
|
1420
1350
|
lb_policy_args.work_serializer = work_serializer_;
|
1421
1351
|
lb_policy_args.channel_control_helper =
|
1422
1352
|
absl::make_unique<ClientChannelControlHelper>(this);
|
1423
|
-
lb_policy_args.args =
|
1353
|
+
lb_policy_args.args = args;
|
1424
1354
|
OrphanablePtr<LoadBalancingPolicy> lb_policy =
|
1425
1355
|
MakeOrphanable<ChildPolicyHandler>(std::move(lb_policy_args),
|
1426
1356
|
&grpc_client_channel_trace);
|
@@ -1495,20 +1425,11 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1495
1425
|
config_selector =
|
1496
1426
|
MakeRefCounted<DefaultConfigSelector>(saved_service_config_);
|
1497
1427
|
}
|
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);
|
1428
|
+
ChannelArgs new_args = config_selector->ModifyChannelArgs(
|
1429
|
+
channel_args_.SetObject(this).SetObject(service_config));
|
1509
1430
|
bool enable_retries =
|
1510
|
-
!
|
1511
|
-
|
1431
|
+
!new_args.WantMinimalStack() &&
|
1432
|
+
new_args.GetBool(GRPC_ARG_ENABLE_RETRIES).value_or(true);
|
1512
1433
|
// Construct dynamic filter stack.
|
1513
1434
|
std::vector<const grpc_channel_filter*> filters =
|
1514
1435
|
config_selector->GetFilters();
|
@@ -1518,9 +1439,8 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1518
1439
|
filters.push_back(&DynamicTerminationFilter::kFilterVtable);
|
1519
1440
|
}
|
1520
1441
|
RefCountedPtr<DynamicFilters> dynamic_filters =
|
1521
|
-
DynamicFilters::Create(new_args, std::move(filters));
|
1442
|
+
DynamicFilters::Create(new_args.ToC().get(), std::move(filters));
|
1522
1443
|
GPR_ASSERT(dynamic_filters != nullptr);
|
1523
|
-
grpc_channel_args_destroy(new_args);
|
1524
1444
|
// Grab data plane lock to update service config.
|
1525
1445
|
//
|
1526
1446
|
// We defer unreffing the old values (and deallocating memory) until
|
@@ -1706,6 +1626,10 @@ grpc_error_handle ClientChannel::DoPingLocked(grpc_transport_op* op) {
|
|
1706
1626
|
complete_pick->subchannel.get());
|
1707
1627
|
RefCountedPtr<ConnectedSubchannel> connected_subchannel =
|
1708
1628
|
subchannel->connected_subchannel();
|
1629
|
+
if (connected_subchannel == nullptr) {
|
1630
|
+
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1631
|
+
"LB pick for ping not connected");
|
1632
|
+
}
|
1709
1633
|
connected_subchannel->Ping(op->send_ping.on_initiate,
|
1710
1634
|
op->send_ping.on_ack);
|
1711
1635
|
return GRPC_ERROR_NONE;
|
@@ -2240,7 +2164,9 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
|
|
2240
2164
|
// Use the ConfigSelector to determine the config for the call.
|
2241
2165
|
ConfigSelector::CallConfig call_config =
|
2242
2166
|
config_selector->GetCallConfig({&path_, initial_metadata, arena_});
|
2243
|
-
if (!
|
2167
|
+
if (!call_config.status.ok()) {
|
2168
|
+
return absl_status_to_grpc_error(call_config.status);
|
2169
|
+
}
|
2244
2170
|
// Create a ClientChannelServiceConfigCallData for the call. This stores
|
2245
2171
|
// a ref to the ServiceConfig and caches the right set of parsed configs
|
2246
2172
|
// to use for the call. The ClientChannelServiceConfigCallData will store
|
@@ -2270,17 +2196,13 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
|
|
2270
2196
|
}
|
2271
2197
|
// If the service config set wait_for_ready and the application
|
2272
2198
|
// did not explicitly set it, use the value from the service config.
|
2273
|
-
|
2274
|
-
|
2275
|
-
|
2199
|
+
auto* wait_for_ready =
|
2200
|
+
pending_batches_[0]
|
2201
|
+
->payload->send_initial_metadata.send_initial_metadata
|
2202
|
+
->GetOrCreatePointer(WaitForReady());
|
2276
2203
|
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
|
-
}
|
2204
|
+
!wait_for_ready->explicitly_set) {
|
2205
|
+
wait_for_ready->value = method_params->wait_for_ready().value();
|
2284
2206
|
}
|
2285
2207
|
}
|
2286
2208
|
// Set the dynamic filter stack.
|
@@ -2388,16 +2310,14 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
|
|
2388
2310
|
pending_batches_[0]->payload->send_initial_metadata;
|
2389
2311
|
grpc_metadata_batch* initial_metadata_batch =
|
2390
2312
|
send_initial_metadata.send_initial_metadata;
|
2391
|
-
const uint32_t send_initial_metadata_flags =
|
2392
|
-
send_initial_metadata.send_initial_metadata_flags;
|
2393
2313
|
// If we don't yet have a resolver result, we need to queue the call
|
2394
2314
|
// until we get one.
|
2395
2315
|
if (GPR_UNLIKELY(!chand->received_service_config_data_)) {
|
2396
2316
|
// If the resolver returned transient failure before returning the
|
2397
2317
|
// first service config, fail any non-wait_for_ready calls.
|
2398
2318
|
absl::Status resolver_error = chand->resolver_transient_failure_error_;
|
2399
|
-
if (!resolver_error.ok() &&
|
2400
|
-
|
2319
|
+
if (!resolver_error.ok() &&
|
2320
|
+
!initial_metadata_batch->GetOrCreatePointer(WaitForReady())->value) {
|
2401
2321
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2402
2322
|
gpr_log(GPR_INFO, "chand=%p calld=%p: resolution failed, failing call",
|
2403
2323
|
chand, this);
|
@@ -2795,8 +2715,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2795
2715
|
}
|
2796
2716
|
if (batch->send_initial_metadata) {
|
2797
2717
|
call_attempt_tracer_->RecordSendInitialMetadata(
|
2798
|
-
batch->payload->send_initial_metadata.send_initial_metadata
|
2799
|
-
batch->payload->send_initial_metadata.send_initial_metadata_flags);
|
2718
|
+
batch->payload->send_initial_metadata.send_initial_metadata);
|
2800
2719
|
peer_string_ = batch->payload->send_initial_metadata.peer_string;
|
2801
2720
|
original_send_initial_metadata_on_complete_ = batch->on_complete;
|
2802
2721
|
GRPC_CLOSURE_INIT(&send_initial_metadata_on_complete_,
|
@@ -3171,8 +3090,6 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3171
3090
|
pending_batches_[0]->payload->send_initial_metadata;
|
3172
3091
|
grpc_metadata_batch* initial_metadata_batch =
|
3173
3092
|
send_initial_metadata.send_initial_metadata;
|
3174
|
-
const uint32_t send_initial_metadata_flags =
|
3175
|
-
send_initial_metadata.send_initial_metadata_flags;
|
3176
3093
|
// Perform LB pick.
|
3177
3094
|
LoadBalancingPolicy::PickArgs pick_args;
|
3178
3095
|
pick_args.path = path_.as_string_view();
|
@@ -3230,7 +3147,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3230
3147
|
return false;
|
3231
3148
|
},
|
3232
3149
|
// FailPick
|
3233
|
-
[this,
|
3150
|
+
[this, initial_metadata_batch,
|
3234
3151
|
&error](LoadBalancingPolicy::PickResult::Fail* fail_pick)
|
3235
3152
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
|
3236
3153
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
@@ -3239,8 +3156,8 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3239
3156
|
}
|
3240
3157
|
// If wait_for_ready is false, then the error indicates the RPC
|
3241
3158
|
// attempt's final status.
|
3242
|
-
if ((
|
3243
|
-
|
3159
|
+
if (!initial_metadata_batch->GetOrCreatePointer(WaitForReady())
|
3160
|
+
->value) {
|
3244
3161
|
grpc_error_handle lb_error =
|
3245
3162
|
absl_status_to_grpc_error(fail_pick->status);
|
3246
3163
|
*error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|