grpc 1.48.0 → 1.49.1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +104 -41
- data/include/grpc/event_engine/event_engine.h +19 -16
- data/include/grpc/impl/codegen/grpc_types.h +3 -8
- data/include/grpc/impl/codegen/port_platform.h +0 -8
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +3 -3
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +2 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +125 -200
- data/src/core/ext/filters/client_channel/client_channel.h +15 -8
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +0 -29
- data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -10
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.h +12 -4
- data/src/core/ext/filters/client_channel/connector.h +4 -5
- data/src/core/ext/filters/client_channel/http_proxy.cc +53 -65
- data/src/core/ext/filters/client_channel/http_proxy.h +12 -9
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +14 -12
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +6 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +102 -131
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +12 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +5 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +169 -63
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +25 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +15 -19
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +66 -78
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +44 -44
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +6 -5
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +65 -77
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +15 -14
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +19 -14
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +63 -67
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +40 -49
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +81 -97
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +53 -61
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +171 -102
- data/src/core/ext/filters/client_channel/proxy_mapper.h +13 -14
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +19 -16
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +8 -7
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +4 -8
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +431 -145
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +170 -99
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +20 -7
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +17 -15
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +7 -17
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +11 -0
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +38 -17
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +3 -4
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +5 -6
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -13
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +162 -165
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +37 -30
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +7 -10
- data/src/core/ext/filters/client_channel/retry_filter.cc +0 -7
- data/src/core/ext/filters/client_channel/retry_service_config.cc +30 -19
- data/src/core/ext/filters/client_channel/retry_service_config.h +6 -9
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +6 -7
- data/src/core/ext/filters/client_channel/subchannel.cc +49 -89
- data/src/core/ext/filters/client_channel/subchannel.h +8 -8
- data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +1 -1
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +6 -76
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +16 -25
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +3 -4
- data/src/core/ext/filters/deadline/deadline_filter.cc +6 -6
- data/src/core/ext/filters/deadline/deadline_filter.h +2 -3
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -3
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +1 -1
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +17 -12
- data/src/core/ext/filters/fault_injection/service_config_parser.h +4 -5
- data/src/core/ext/filters/http/client/http_client_filter.cc +2 -3
- data/src/core/ext/filters/http/client/http_client_filter.h +1 -1
- data/src/core/ext/filters/http/client_authority_filter.cc +1 -2
- data/src/core/ext/filters/http/client_authority_filter.h +1 -1
- data/src/core/ext/filters/http/server/http_server_filter.cc +2 -3
- data/src/core/ext/filters/http/server/http_server_filter.h +1 -1
- data/src/core/ext/filters/message_size/message_size_filter.cc +13 -7
- data/src/core/ext/filters/message_size/message_size_filter.h +3 -6
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +16 -12
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +4 -6
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +5 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +3 -5
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +35 -62
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +62 -89
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +4 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +130 -165
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +3 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +67 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -0
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +7 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +25 -8
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +4 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +0 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +8 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +2 -10
- data/src/core/ext/transport/chttp2/transport/internal.h +2 -1
- data/src/core/ext/transport/inproc/inproc_transport.cc +40 -74
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +24 -8
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +8 -327
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +83 -1723
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +352 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +1768 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +6 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +33 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -3
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +14 -14
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +90 -30
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +21 -19
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +124 -34
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +23 -22
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +153 -48
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +11 -11
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +84 -28
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +25 -23
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +156 -48
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +12 -12
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +78 -26
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +54 -18
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +21 -20
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +117 -44
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +36 -12
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +37 -13
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +170 -15
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +7 -4
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +36 -4
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +6 -6
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +48 -16
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +54 -18
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +21 -9
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +100 -14
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +7 -22
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +36 -77
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +121 -76
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +647 -163
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +34 -15
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +161 -22
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +98 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +1 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +11 -4
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +58 -4
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +35 -27
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +177 -52
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +10 -8
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +66 -14
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +131 -16
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +632 -12
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +24 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +24 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +202 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +6 -2
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -1
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +11 -11
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +66 -22
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +9 -9
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +72 -24
- data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
- data/src/core/ext/upb-generated/google/api/http.upb.h +18 -6
- data/src/core/ext/upb-generated/google/api/httpbody.upb.c +1 -1
- data/src/core/ext/upb-generated/google/api/httpbody.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +44 -43
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +177 -55
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +2 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +18 -6
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +6 -6
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +54 -18
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +6 -2
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +2 -2
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +24 -8
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +6 -2
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +7 -7
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +60 -20
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +1 -1
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +6 -6
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +54 -18
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +2 -2
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +7 -7
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +42 -14
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +23 -11
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -3
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +7 -3
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -3
- data/src/core/ext/upb-generated/validate/validate.upb.c +22 -22
- data/src/core/ext/upb-generated/validate/validate.upb.h +139 -47
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +23 -11
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +7 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +27 -11
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +7 -3
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +2 -2
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +6 -6
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +54 -18
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +2 -2
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +6 -2
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +67 -274
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +0 -85
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +256 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +115 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +14 -11
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +107 -107
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +191 -187
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +156 -154
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +186 -183
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +136 -134
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +16 -16
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +162 -139
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +39 -31
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +12 -8
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +72 -75
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +0 -5
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +713 -670
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +150 -139
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +47 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +16 -12
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +46 -25
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +477 -466
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +21 -18
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +153 -84
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +113 -113
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +29 -28
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +69 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +92 -90
- data/src/core/ext/xds/upb_utils.h +0 -21
- data/src/core/ext/xds/xds_api.cc +53 -86
- data/src/core/ext/xds/xds_api.h +19 -28
- data/src/core/ext/xds/xds_bootstrap.cc +39 -52
- data/src/core/ext/xds/xds_bootstrap.h +28 -8
- data/src/core/ext/xds/xds_certificate_provider.h +9 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +6 -4
- data/src/core/ext/xds/xds_channel_stack_modifier.h +8 -0
- data/src/core/ext/xds/xds_client.cc +555 -1214
- data/src/core/ext/xds/xds_client.h +16 -44
- data/src/core/ext/xds/xds_client_grpc.cc +291 -0
- data/src/core/ext/xds/xds_client_grpc.h +102 -0
- data/src/core/ext/xds/xds_cluster.cc +92 -103
- data/src/core/ext/xds/xds_cluster.h +6 -5
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +10 -14
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +1 -0
- data/src/core/ext/xds/xds_common_types.cc +134 -110
- data/src/core/ext/xds/xds_common_types.h +6 -7
- data/src/core/ext/xds/xds_endpoint.cc +80 -80
- data/src/core/ext/xds/xds_endpoint.h +4 -4
- data/src/core/ext/xds/xds_http_fault_filter.cc +4 -11
- data/src/core/ext/xds/xds_http_fault_filter.h +3 -3
- data/src/core/ext/xds/xds_http_filters.h +3 -3
- data/src/core/ext/xds/xds_http_rbac_filter.cc +39 -58
- data/src/core/ext/xds/xds_http_rbac_filter.h +3 -3
- data/src/core/ext/xds/xds_lb_policy_registry.cc +17 -20
- data/src/core/ext/xds/xds_lb_policy_registry.h +4 -4
- data/src/core/ext/xds/xds_listener.cc +329 -299
- data/src/core/ext/xds/xds_listener.h +4 -4
- data/src/core/ext/xds/xds_resource_type.h +13 -2
- data/src/core/ext/xds/xds_route_config.cc +180 -177
- data/src/core/ext/xds/xds_route_config.h +31 -17
- data/src/core/ext/xds/xds_routing.cc +3 -6
- data/src/core/ext/xds/xds_routing.h +7 -9
- data/src/core/ext/xds/xds_server_config_fetcher.cc +76 -81
- data/src/core/ext/xds/xds_transport.h +86 -0
- data/src/core/ext/xds/xds_transport_grpc.cc +349 -0
- data/src/core/ext/xds/xds_transport_grpc.h +135 -0
- data/src/core/lib/address_utils/parse_address.cc +19 -17
- data/src/core/lib/address_utils/parse_address.h +8 -5
- data/src/core/lib/avl/avl.h +47 -25
- data/src/core/lib/channel/call_tracer.h +1 -1
- data/src/core/lib/channel/channel_args.cc +88 -19
- data/src/core/lib/channel/channel_args.h +113 -62
- data/src/core/lib/channel/channel_stack.cc +0 -1
- data/src/core/lib/channel/channel_stack_builder.cc +3 -3
- data/src/core/lib/channel/channel_stack_builder.h +2 -2
- data/src/core/lib/channel/channel_stack_builder_impl.cc +2 -4
- data/src/core/lib/channel/channelz.cc +27 -37
- data/src/core/lib/channel/channelz.h +9 -0
- data/src/core/lib/channel/promise_based_filter.h +0 -1
- data/src/core/lib/config/core_configuration.h +48 -35
- data/src/core/lib/debug/stats.cc +12 -15
- data/src/core/lib/debug/stats.h +11 -3
- data/src/core/lib/event_engine/{event_engine.cc → default_event_engine.cc} +9 -5
- data/src/core/lib/event_engine/{event_engine_factory.h → default_event_engine.h} +4 -8
- data/src/core/lib/event_engine/default_event_engine_factory.cc +20 -3
- data/src/core/lib/event_engine/default_event_engine_factory.h +33 -0
- data/src/core/lib/event_engine/executor/executor.h +38 -0
- data/src/core/lib/event_engine/executor/threaded_executor.cc +36 -0
- data/src/core/lib/event_engine/executor/threaded_executor.h +44 -0
- data/src/core/lib/event_engine/forkable.cc +101 -0
- data/src/core/lib/event_engine/forkable.h +61 -0
- data/src/core/lib/event_engine/poller.h +54 -0
- data/src/core/lib/event_engine/{iomgr_engine/iomgr_engine.cc → posix_engine/posix_engine.cc} +30 -47
- data/src/core/lib/event_engine/{iomgr_engine/iomgr_engine.h → posix_engine/posix_engine.h} +27 -28
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer.cc +4 -5
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer.h +8 -8
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_heap.cc +4 -4
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_heap.h +5 -5
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_manager.cc +46 -10
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_manager.h +17 -8
- data/src/core/lib/event_engine/promise.h +11 -2
- data/src/core/lib/event_engine/socket_notifier.h +55 -0
- data/src/core/lib/event_engine/{iomgr_engine/thread_pool.cc → thread_pool.cc} +49 -14
- data/src/core/lib/event_engine/{iomgr_engine/thread_pool.h → thread_pool.h} +21 -10
- data/src/core/lib/event_engine/utils.cc +49 -0
- data/src/core/lib/event_engine/utils.h +40 -0
- data/src/core/lib/event_engine/windows/iocp.cc +149 -0
- data/src/core/lib/event_engine/windows/iocp.h +68 -0
- data/src/core/lib/event_engine/windows/win_socket.cc +196 -0
- data/src/core/lib/event_engine/windows/win_socket.h +120 -0
- data/src/core/lib/event_engine/windows/windows_engine.cc +159 -0
- data/src/core/lib/event_engine/windows/windows_engine.h +120 -0
- data/src/core/lib/gpr/time.cc +11 -9
- data/src/core/lib/gpr/useful.h +29 -0
- data/src/core/lib/gprpp/bitset.h +3 -13
- data/src/core/lib/gprpp/debug_location.h +39 -7
- data/src/core/lib/gprpp/manual_constructor.h +0 -1
- data/src/core/lib/gprpp/no_destruct.h +94 -0
- data/src/core/lib/gprpp/ref_counted_ptr.h +0 -1
- data/src/core/lib/gprpp/status_helper.cc +1 -0
- data/src/core/lib/gprpp/table.h +0 -1
- data/src/core/lib/{event_engine/iomgr_engine → gprpp}/time_averaged_stats.cc +3 -5
- data/src/core/lib/{event_engine/iomgr_engine → gprpp}/time_averaged_stats.h +5 -7
- data/src/core/lib/{iomgr → gprpp}/work_serializer.cc +34 -18
- data/src/core/lib/{iomgr → gprpp}/work_serializer.h +21 -27
- data/src/core/lib/http/httpcli.cc +12 -24
- data/src/core/lib/http/httpcli_security_connector.cc +11 -11
- data/src/core/lib/iomgr/call_combiner.cc +0 -26
- data/src/core/lib/iomgr/closure.h +0 -9
- data/src/core/lib/iomgr/combiner.cc +0 -20
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
- data/src/core/lib/iomgr/error.cc +0 -773
- data/src/core/lib/iomgr/error.h +0 -145
- data/src/core/lib/iomgr/error_cfstream.cc +0 -5
- data/src/core/lib/iomgr/ev_poll_posix.cc +17 -9
- data/src/core/lib/iomgr/exec_ctx.cc +0 -12
- data/src/core/lib/iomgr/executor.cc +0 -10
- data/src/core/lib/iomgr/executor.h +0 -3
- data/src/core/lib/iomgr/lockfree_event.cc +0 -17
- data/src/core/lib/iomgr/port.h +3 -0
- data/src/core/lib/iomgr/resolve_address.h +29 -6
- data/src/core/lib/iomgr/resolve_address_posix.cc +42 -8
- data/src/core/lib/iomgr/resolve_address_posix.h +19 -5
- data/src/core/lib/iomgr/resolve_address_windows.cc +44 -10
- data/src/core/lib/iomgr/resolve_address_windows.h +19 -5
- data/src/core/lib/iomgr/socket_windows.h +0 -2
- data/src/core/lib/iomgr/tcp_posix.cc +118 -6
- data/src/core/lib/iomgr/timer_generic.cc +6 -8
- data/src/core/lib/json/json.h +19 -22
- data/src/core/lib/json/json_args.h +34 -0
- data/src/core/lib/json/json_object_loader.cc +233 -0
- data/src/core/lib/json/json_object_loader.h +618 -0
- data/src/core/lib/json/json_reader.cc +86 -62
- data/src/core/lib/json/json_util.cc +8 -36
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.cc +3 -44
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.h +15 -24
- data/src/core/lib/load_balancing/lb_policy_factory.h +49 -0
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy_registry.cc +49 -72
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy_registry.h +27 -27
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/subchannel_interface.h +6 -6
- data/src/core/lib/promise/activity.h +56 -8
- data/src/core/lib/promise/arena_promise.h +84 -81
- data/src/core/lib/promise/context.h +0 -1
- data/src/core/lib/promise/detail/basic_seq.h +43 -23
- data/src/core/lib/promise/detail/promise_factory.h +0 -1
- data/src/core/lib/promise/map.h +0 -1
- data/src/core/lib/promise/seq.h +25 -4
- data/src/core/lib/promise/sleep.cc +38 -42
- data/src/core/lib/promise/sleep.h +27 -24
- data/src/core/lib/promise/try_seq.h +26 -6
- data/src/core/lib/resolver/resolver.cc +0 -47
- data/src/core/lib/resolver/resolver.h +2 -12
- data/src/core/lib/resolver/resolver_factory.h +2 -3
- data/src/core/lib/resolver/resolver_registry.cc +1 -1
- data/src/core/lib/resolver/resolver_registry.h +2 -3
- data/src/core/lib/resolver/server_address.cc +11 -15
- data/src/core/lib/resolver/server_address.h +4 -8
- data/src/core/lib/resource_quota/api.cc +1 -1
- data/src/core/lib/resource_quota/arena.cc +21 -1
- data/src/core/lib/resource_quota/arena.h +24 -2
- data/src/core/lib/resource_quota/memory_quota.cc +157 -17
- data/src/core/lib/resource_quota/memory_quota.h +98 -17
- data/src/core/lib/resource_quota/periodic_update.cc +79 -0
- data/src/core/lib/resource_quota/periodic_update.h +71 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +10 -7
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -2
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -1
- data/src/core/lib/security/authorization/matchers.cc +13 -10
- data/src/core/lib/security/authorization/rbac_policy.cc +0 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -3
- data/src/core/lib/security/credentials/alts/alts_credentials.h +3 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +3 -7
- data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -4
- data/src/core/lib/security/credentials/credentials.h +16 -12
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +18 -11
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +32 -23
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -6
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +4 -6
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +3 -12
- data/src/core/lib/security/credentials/fake/fake_credentials.h +0 -4
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +29 -26
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +1 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +0 -1
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +3 -3
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +3 -4
- data/src/core/lib/security/credentials/jwt/json_token.cc +12 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +4 -8
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +11 -13
- data/src/core/lib/security/credentials/local/local_credentials.cc +3 -4
- data/src/core/lib/security/credentials/local/local_credentials.h +3 -4
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +17 -18
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +0 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +13 -21
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +3 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +6 -0
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +13 -25
- data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -4
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +13 -30
- data/src/core/lib/security/credentials/xds/xds_credentials.h +3 -3
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +10 -18
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +26 -38
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +5 -5
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +6 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +13 -11
- data/src/core/lib/security/security_connector/local/local_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/security_connector.h +5 -3
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +5 -4
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +5 -5
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +5 -5
- data/src/core/lib/security/transport/auth_filters.h +1 -1
- data/src/core/lib/security/transport/client_auth_filter.cc +3 -4
- data/src/core/lib/security/transport/security_handshaker.cc +32 -44
- data/src/core/lib/security/transport/security_handshaker.h +2 -1
- data/src/core/lib/service_config/service_config.h +11 -0
- data/src/core/lib/service_config/service_config_impl.cc +98 -97
- data/src/core/lib/service_config/service_config_impl.h +11 -13
- data/src/core/lib/service_config/service_config_parser.cc +26 -27
- data/src/core/lib/service_config/service_config_parser.h +10 -22
- data/src/core/lib/slice/percent_encoding.cc +4 -13
- data/src/core/lib/slice/slice.cc +10 -4
- data/src/core/lib/surface/call.cc +8 -2
- data/src/core/lib/surface/channel.cc +6 -6
- data/src/core/lib/surface/channel.h +1 -1
- data/src/core/lib/surface/completion_queue.cc +0 -2
- data/src/core/lib/surface/completion_queue.h +0 -3
- data/src/core/lib/surface/init.cc +2 -6
- data/src/core/lib/surface/lame_client.cc +2 -3
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +7 -12
- data/src/core/lib/surface/server.h +7 -7
- data/src/core/lib/surface/validate_metadata.cc +4 -14
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/connectivity_state.cc +0 -1
- data/src/core/lib/transport/connectivity_state.h +1 -1
- data/src/core/lib/transport/error_utils.cc +0 -36
- data/src/core/lib/transport/handshaker.cc +7 -9
- data/src/core/lib/transport/handshaker.h +4 -5
- data/src/core/lib/transport/handshaker_factory.h +2 -3
- data/src/core/lib/transport/handshaker_registry.cc +2 -1
- data/src/core/lib/transport/handshaker_registry.h +2 -4
- data/src/core/lib/transport/http_connect_handshaker.cc +16 -16
- data/src/core/lib/transport/metadata_batch.cc +5 -0
- data/src/core/lib/transport/metadata_batch.h +52 -7
- data/src/core/lib/transport/parsed_metadata.h +0 -1
- data/src/core/lib/transport/tcp_connect_handshaker.cc +12 -18
- data/src/core/lib/transport/transport.h +0 -7
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +40 -21
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +14 -7
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +1 -1
- data/src/core/tsi/fake_transport_security.cc +53 -30
- data/src/core/tsi/local_transport_security.cc +9 -5
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +10 -1
- data/src/core/tsi/ssl_transport_security.cc +47 -23
- data/src/core/tsi/transport_security.cc +18 -6
- data/src/core/tsi/transport_security.h +2 -1
- data/src/core/tsi/transport_security_interface.h +17 -5
- data/src/ruby/ext/grpc/extconf.rb +2 -0
- data/src/ruby/ext/grpc/rb_loader.c +6 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -0
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +313 -0
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +857 -0
- data/third_party/upb/third_party/utf8_range/utf8_range.h +1 -1
- data/third_party/upb/upb/arena.c +277 -0
- data/third_party/upb/upb/arena.h +225 -0
- data/third_party/upb/upb/array.c +114 -0
- data/third_party/upb/upb/array.h +83 -0
- data/third_party/upb/upb/collections.h +36 -0
- data/third_party/upb/upb/decode.c +161 -65
- data/third_party/upb/upb/decode.h +1 -0
- data/third_party/upb/upb/decode_fast.c +1 -1
- data/third_party/upb/upb/def.c +10 -2
- data/third_party/upb/upb/def.h +8 -1
- data/third_party/upb/upb/def.hpp +7 -4
- data/third_party/upb/upb/encode.c +29 -20
- data/third_party/upb/upb/encode.h +16 -6
- data/third_party/upb/upb/extension_registry.c +93 -0
- data/third_party/upb/upb/extension_registry.h +84 -0
- data/third_party/upb/upb/{decode_internal.h → internal/decode.h} +5 -5
- data/third_party/upb/upb/internal/table.h +385 -0
- data/third_party/upb/upb/{upb_internal.h → internal/upb.h} +3 -3
- data/third_party/upb/upb/internal/vsnprintf_compat.h +52 -0
- data/third_party/upb/upb/json_decode.c +1512 -0
- data/third_party/upb/upb/json_decode.h +47 -0
- data/third_party/upb/upb/json_encode.c +7 -3
- data/third_party/upb/upb/json_encode.h +6 -3
- data/third_party/upb/upb/map.c +108 -0
- data/third_party/upb/upb/map.h +117 -0
- data/third_party/upb/upb/message_value.h +66 -0
- data/third_party/upb/upb/mini_table.c +1147 -0
- data/third_party/upb/upb/mini_table.h +189 -0
- data/third_party/upb/upb/mini_table.hpp +112 -0
- data/third_party/upb/upb/msg.c +2 -62
- data/third_party/upb/upb/msg.h +2 -45
- data/third_party/upb/upb/msg_internal.h +28 -22
- data/third_party/upb/upb/port_def.inc +2 -1
- data/third_party/upb/upb/port_undef.inc +1 -0
- data/third_party/upb/upb/reflection.c +2 -159
- data/third_party/upb/upb/reflection.h +2 -112
- data/third_party/upb/upb/status.c +86 -0
- data/third_party/upb/upb/status.h +66 -0
- data/third_party/upb/upb/table.c +2 -2
- data/third_party/upb/upb/table_internal.h +3 -352
- data/third_party/upb/upb/text_encode.c +3 -2
- data/third_party/upb/upb/upb.c +4 -290
- data/third_party/upb/upb/upb.h +7 -196
- metadata +88 -36
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -50
- data/src/core/lib/iomgr/error_internal.h +0 -66
- data/src/core/lib/iomgr/executor/mpmcqueue.cc +0 -182
- data/src/core/lib/iomgr/executor/mpmcqueue.h +0 -171
- data/src/core/lib/iomgr/executor/threadpool.cc +0 -136
- data/src/core/lib/iomgr/executor/threadpool.h +0 -150
- data/src/core/lib/iomgr/time_averaged_stats.cc +0 -64
- data/src/core/lib/iomgr/time_averaged_stats.h +0 -72
- data/src/core/lib/promise/detail/switch.h +0 -1455
@@ -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);
|
@@ -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,28 @@ 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_ = 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
|
-
}
|
1026
|
+
uri_to_resolve_ = ProxyMapperRegistry::MapName(*server_uri, &channel_args_)
|
1027
|
+
.value_or(*server_uri);
|
1105
1028
|
// Make sure the URI to resolve is valid, so that we know that
|
1106
1029
|
// resolver creation will succeed later.
|
1107
1030
|
if (!CoreConfiguration::Get().resolver_registry().IsValidTarget(
|
@@ -1112,23 +1035,23 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
|
1112
1035
|
}
|
1113
1036
|
// Strip out service config channel arg, so that it doesn't affect
|
1114
1037
|
// 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);
|
1038
|
+
channel_args_ = channel_args_.Remove(GRPC_ARG_SERVICE_CONFIG);
|
1119
1039
|
// Set initial keepalive time.
|
1120
|
-
|
1121
|
-
|
1122
|
-
|
1040
|
+
auto keepalive_arg = channel_args_.GetInt(GRPC_ARG_KEEPALIVE_TIME_MS);
|
1041
|
+
if (keepalive_arg.has_value()) {
|
1042
|
+
keepalive_time_ = Clamp(*keepalive_arg, 1, INT_MAX);
|
1043
|
+
} else {
|
1044
|
+
keepalive_time_ = -1; // unset
|
1045
|
+
}
|
1123
1046
|
// Set default authority.
|
1124
|
-
|
1125
|
-
|
1126
|
-
if (default_authority
|
1047
|
+
absl::optional<std::string> default_authority =
|
1048
|
+
channel_args_.GetOwnedString(GRPC_ARG_DEFAULT_AUTHORITY);
|
1049
|
+
if (!default_authority.has_value()) {
|
1127
1050
|
default_authority_ =
|
1128
1051
|
CoreConfiguration::Get().resolver_registry().GetDefaultAuthority(
|
1129
|
-
server_uri);
|
1052
|
+
*server_uri);
|
1130
1053
|
} else {
|
1131
|
-
default_authority_ = default_authority;
|
1054
|
+
default_authority_ = std::move(*default_authority);
|
1132
1055
|
}
|
1133
1056
|
// Success.
|
1134
1057
|
*error = GRPC_ERROR_NONE;
|
@@ -1139,7 +1062,6 @@ ClientChannel::~ClientChannel() {
|
|
1139
1062
|
gpr_log(GPR_INFO, "chand=%p: destroying channel", this);
|
1140
1063
|
}
|
1141
1064
|
DestroyResolverAndLbPolicyLocked();
|
1142
|
-
grpc_channel_args_destroy(channel_args_);
|
1143
1065
|
// Stop backup polling.
|
1144
1066
|
grpc_client_channel_stop_backup_polling(interested_parties_);
|
1145
1067
|
grpc_pollset_set_destroy(interested_parties_);
|
@@ -1157,6 +1079,29 @@ ClientChannel::CreateLoadBalancedCall(
|
|
1157
1079
|
call_dispatch_controller, is_transparent_retry));
|
1158
1080
|
}
|
1159
1081
|
|
1082
|
+
ChannelArgs ClientChannel::MakeSubchannelArgs(
|
1083
|
+
const ChannelArgs& channel_args, const ChannelArgs& address_args,
|
1084
|
+
const RefCountedPtr<SubchannelPoolInterface>& subchannel_pool,
|
1085
|
+
const std::string& channel_default_authority) {
|
1086
|
+
// Note that we start with the channel-level args and then apply the
|
1087
|
+
// per-address args, so that if a value is present in both, the one
|
1088
|
+
// in the channel-level args is used. This is particularly important
|
1089
|
+
// for the GRPC_ARG_DEFAULT_AUTHORITY arg, which we want to allow
|
1090
|
+
// resolvers to set on a per-address basis only if the application
|
1091
|
+
// did not explicitly set it at the channel level.
|
1092
|
+
return channel_args.UnionWith(address_args)
|
1093
|
+
.SetObject(subchannel_pool)
|
1094
|
+
// If we haven't already set the default authority arg (i.e., it
|
1095
|
+
// was not explicitly set by the application nor overridden by
|
1096
|
+
// the resolver), add it from the channel's default.
|
1097
|
+
.SetIfUnset(GRPC_ARG_DEFAULT_AUTHORITY, channel_default_authority)
|
1098
|
+
// Remove channel args that should not affect subchannel
|
1099
|
+
// uniqueness.
|
1100
|
+
.Remove(GRPC_ARG_HEALTH_CHECK_SERVICE_NAME)
|
1101
|
+
.Remove(GRPC_ARG_INHIBIT_HEALTH_CHECKING)
|
1102
|
+
.Remove(GRPC_ARG_CHANNELZ_CHANNEL_NODE);
|
1103
|
+
}
|
1104
|
+
|
1160
1105
|
namespace {
|
1161
1106
|
|
1162
1107
|
RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
|
@@ -1168,41 +1113,39 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
|
|
1168
1113
|
}
|
1169
1114
|
// Try the deprecated LB policy name from the service config.
|
1170
1115
|
// If not, try the setting from channel args.
|
1171
|
-
|
1116
|
+
absl::optional<absl::string_view> policy_name;
|
1172
1117
|
if (!parsed_service_config->parsed_deprecated_lb_policy().empty()) {
|
1173
|
-
policy_name = parsed_service_config->parsed_deprecated_lb_policy()
|
1118
|
+
policy_name = parsed_service_config->parsed_deprecated_lb_policy();
|
1174
1119
|
} else {
|
1175
|
-
policy_name =
|
1176
|
-
GRPC_ARG_LB_POLICY_NAME);
|
1120
|
+
policy_name = resolver_result.args.GetString(GRPC_ARG_LB_POLICY_NAME);
|
1177
1121
|
bool requires_config = false;
|
1178
|
-
if (policy_name
|
1122
|
+
if (policy_name.has_value() &&
|
1179
1123
|
(!LoadBalancingPolicyRegistry::LoadBalancingPolicyExists(
|
1180
|
-
policy_name, &requires_config) ||
|
1124
|
+
*policy_name, &requires_config) ||
|
1181
1125
|
requires_config)) {
|
1182
1126
|
if (requires_config) {
|
1183
1127
|
gpr_log(GPR_ERROR,
|
1184
1128
|
"LB policy: %s passed through channel_args must not "
|
1185
1129
|
"require a config. Using pick_first instead.",
|
1186
|
-
policy_name);
|
1130
|
+
std::string(*policy_name).c_str());
|
1187
1131
|
} else {
|
1188
1132
|
gpr_log(GPR_ERROR,
|
1189
1133
|
"LB policy: %s passed through channel_args does not exist. "
|
1190
1134
|
"Using pick_first instead.",
|
1191
|
-
policy_name);
|
1135
|
+
std::string(*policy_name).c_str());
|
1192
1136
|
}
|
1193
1137
|
policy_name = "pick_first";
|
1194
1138
|
}
|
1195
1139
|
}
|
1196
1140
|
// Use pick_first if nothing was specified and we didn't select grpclb
|
1197
1141
|
// above.
|
1198
|
-
if (policy_name
|
1142
|
+
if (!policy_name.has_value()) policy_name = "pick_first";
|
1199
1143
|
// Now that we have the policy name, construct an empty config for it.
|
1200
1144
|
Json config_json = Json::Array{Json::Object{
|
1201
|
-
{policy_name, Json::Object{}},
|
1145
|
+
{std::string(*policy_name), Json::Object{}},
|
1202
1146
|
}};
|
1203
|
-
|
1204
|
-
|
1205
|
-
config_json, &parse_error);
|
1147
|
+
auto lb_policy_config =
|
1148
|
+
LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(config_json);
|
1206
1149
|
// The policy name came from one of three places:
|
1207
1150
|
// - The deprecated loadBalancingPolicy field in the service config,
|
1208
1151
|
// in which case the code in ClientChannelServiceConfigParser
|
@@ -1212,9 +1155,8 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
|
|
1212
1155
|
// - A channel arg, in which case we check that the specified policy exists
|
1213
1156
|
// and accepts an empty config. If not, we revert to using pick_first
|
1214
1157
|
// lb_policy
|
1215
|
-
GPR_ASSERT(lb_policy_config
|
1216
|
-
|
1217
|
-
return lb_policy_config;
|
1158
|
+
GPR_ASSERT(lb_policy_config.ok());
|
1159
|
+
return std::move(*lb_policy_config);
|
1218
1160
|
}
|
1219
1161
|
|
1220
1162
|
} // namespace
|
@@ -1289,7 +1231,7 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1289
1231
|
} else {
|
1290
1232
|
// Use ServiceConfig and ConfigSelector returned by resolver.
|
1291
1233
|
service_config = std::move(*result.service_config);
|
1292
|
-
config_selector =
|
1234
|
+
config_selector = result.args.GetObjectRef<ConfigSelector>();
|
1293
1235
|
}
|
1294
1236
|
// Note: The only case in which service_config is null here is if the resolver
|
1295
1237
|
// returned a service config error and we don't have a previous service
|
@@ -1313,9 +1255,9 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1313
1255
|
// If either has changed, apply the global parameters now.
|
1314
1256
|
if (service_config_changed || config_selector_changed) {
|
1315
1257
|
// Update service config in control plane.
|
1316
|
-
UpdateServiceConfigInControlPlaneLocked(
|
1317
|
-
|
1318
|
-
|
1258
|
+
UpdateServiceConfigInControlPlaneLocked(
|
1259
|
+
std::move(service_config), std::move(config_selector),
|
1260
|
+
std::string(lb_policy_config->name()));
|
1319
1261
|
} else if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1320
1262
|
gpr_log(GPR_INFO, "chand=%p: service config not changed", this);
|
1321
1263
|
}
|
@@ -1388,22 +1330,18 @@ void ClientChannel::CreateOrUpdateLbPolicyLocked(
|
|
1388
1330
|
update_args.addresses = std::move(result.addresses);
|
1389
1331
|
update_args.config = std::move(lb_policy_config);
|
1390
1332
|
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
1333
|
// Remove the config selector from channel args so that we're not holding
|
1399
1334
|
// unnecessary refs that cause it to be destroyed somewhere other than in the
|
1400
1335
|
// WorkSerializer.
|
1401
|
-
|
1402
|
-
|
1403
|
-
|
1336
|
+
update_args.args = result.args.Remove(GRPC_ARG_CONFIG_SELECTOR);
|
1337
|
+
// Add health check service name to channel args.
|
1338
|
+
if (health_check_service_name.has_value()) {
|
1339
|
+
update_args.args = update_args.args.Set(GRPC_ARG_HEALTH_CHECK_SERVICE_NAME,
|
1340
|
+
*health_check_service_name);
|
1341
|
+
}
|
1404
1342
|
// Create policy if needed.
|
1405
1343
|
if (lb_policy_ == nullptr) {
|
1406
|
-
lb_policy_ = CreateLbPolicyLocked(
|
1344
|
+
lb_policy_ = CreateLbPolicyLocked(update_args.args);
|
1407
1345
|
}
|
1408
1346
|
// Update the policy.
|
1409
1347
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
@@ -1415,12 +1353,12 @@ void ClientChannel::CreateOrUpdateLbPolicyLocked(
|
|
1415
1353
|
|
1416
1354
|
// Creates a new LB policy.
|
1417
1355
|
OrphanablePtr<LoadBalancingPolicy> ClientChannel::CreateLbPolicyLocked(
|
1418
|
-
const
|
1356
|
+
const ChannelArgs& args) {
|
1419
1357
|
LoadBalancingPolicy::Args lb_policy_args;
|
1420
1358
|
lb_policy_args.work_serializer = work_serializer_;
|
1421
1359
|
lb_policy_args.channel_control_helper =
|
1422
1360
|
absl::make_unique<ClientChannelControlHelper>(this);
|
1423
|
-
lb_policy_args.args =
|
1361
|
+
lb_policy_args.args = args;
|
1424
1362
|
OrphanablePtr<LoadBalancingPolicy> lb_policy =
|
1425
1363
|
MakeOrphanable<ChildPolicyHandler>(std::move(lb_policy_args),
|
1426
1364
|
&grpc_client_channel_trace);
|
@@ -1495,20 +1433,11 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1495
1433
|
config_selector =
|
1496
1434
|
MakeRefCounted<DefaultConfigSelector>(saved_service_config_);
|
1497
1435
|
}
|
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);
|
1436
|
+
ChannelArgs new_args = config_selector->ModifyChannelArgs(
|
1437
|
+
channel_args_.SetObject(this).SetObject(service_config));
|
1509
1438
|
bool enable_retries =
|
1510
|
-
!
|
1511
|
-
|
1439
|
+
!new_args.WantMinimalStack() &&
|
1440
|
+
new_args.GetBool(GRPC_ARG_ENABLE_RETRIES).value_or(true);
|
1512
1441
|
// Construct dynamic filter stack.
|
1513
1442
|
std::vector<const grpc_channel_filter*> filters =
|
1514
1443
|
config_selector->GetFilters();
|
@@ -1518,9 +1447,8 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1518
1447
|
filters.push_back(&DynamicTerminationFilter::kFilterVtable);
|
1519
1448
|
}
|
1520
1449
|
RefCountedPtr<DynamicFilters> dynamic_filters =
|
1521
|
-
DynamicFilters::Create(new_args, std::move(filters));
|
1450
|
+
DynamicFilters::Create(new_args.ToC().get(), std::move(filters));
|
1522
1451
|
GPR_ASSERT(dynamic_filters != nullptr);
|
1523
|
-
grpc_channel_args_destroy(new_args);
|
1524
1452
|
// Grab data plane lock to update service config.
|
1525
1453
|
//
|
1526
1454
|
// We defer unreffing the old values (and deallocating memory) until
|
@@ -1706,6 +1634,10 @@ grpc_error_handle ClientChannel::DoPingLocked(grpc_transport_op* op) {
|
|
1706
1634
|
complete_pick->subchannel.get());
|
1707
1635
|
RefCountedPtr<ConnectedSubchannel> connected_subchannel =
|
1708
1636
|
subchannel->connected_subchannel();
|
1637
|
+
if (connected_subchannel == nullptr) {
|
1638
|
+
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1639
|
+
"LB pick for ping not connected");
|
1640
|
+
}
|
1709
1641
|
connected_subchannel->Ping(op->send_ping.on_initiate,
|
1710
1642
|
op->send_ping.on_ack);
|
1711
1643
|
return GRPC_ERROR_NONE;
|
@@ -2240,7 +2172,9 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
|
|
2240
2172
|
// Use the ConfigSelector to determine the config for the call.
|
2241
2173
|
ConfigSelector::CallConfig call_config =
|
2242
2174
|
config_selector->GetCallConfig({&path_, initial_metadata, arena_});
|
2243
|
-
if (!
|
2175
|
+
if (!call_config.status.ok()) {
|
2176
|
+
return absl_status_to_grpc_error(call_config.status);
|
2177
|
+
}
|
2244
2178
|
// Create a ClientChannelServiceConfigCallData for the call. This stores
|
2245
2179
|
// a ref to the ServiceConfig and caches the right set of parsed configs
|
2246
2180
|
// to use for the call. The ClientChannelServiceConfigCallData will store
|
@@ -2270,17 +2204,13 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
|
|
2270
2204
|
}
|
2271
2205
|
// If the service config set wait_for_ready and the application
|
2272
2206
|
// did not explicitly set it, use the value from the service config.
|
2273
|
-
|
2274
|
-
|
2275
|
-
|
2207
|
+
auto* wait_for_ready =
|
2208
|
+
pending_batches_[0]
|
2209
|
+
->payload->send_initial_metadata.send_initial_metadata
|
2210
|
+
->GetOrCreatePointer(WaitForReady());
|
2276
2211
|
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
|
-
}
|
2212
|
+
!wait_for_ready->explicitly_set) {
|
2213
|
+
wait_for_ready->value = method_params->wait_for_ready().value();
|
2284
2214
|
}
|
2285
2215
|
}
|
2286
2216
|
// Set the dynamic filter stack.
|
@@ -2388,16 +2318,14 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
|
|
2388
2318
|
pending_batches_[0]->payload->send_initial_metadata;
|
2389
2319
|
grpc_metadata_batch* initial_metadata_batch =
|
2390
2320
|
send_initial_metadata.send_initial_metadata;
|
2391
|
-
const uint32_t send_initial_metadata_flags =
|
2392
|
-
send_initial_metadata.send_initial_metadata_flags;
|
2393
2321
|
// If we don't yet have a resolver result, we need to queue the call
|
2394
2322
|
// until we get one.
|
2395
2323
|
if (GPR_UNLIKELY(!chand->received_service_config_data_)) {
|
2396
2324
|
// If the resolver returned transient failure before returning the
|
2397
2325
|
// first service config, fail any non-wait_for_ready calls.
|
2398
2326
|
absl::Status resolver_error = chand->resolver_transient_failure_error_;
|
2399
|
-
if (!resolver_error.ok() &&
|
2400
|
-
|
2327
|
+
if (!resolver_error.ok() &&
|
2328
|
+
!initial_metadata_batch->GetOrCreatePointer(WaitForReady())->value) {
|
2401
2329
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2402
2330
|
gpr_log(GPR_INFO, "chand=%p calld=%p: resolution failed, failing call",
|
2403
2331
|
chand, this);
|
@@ -2795,8 +2723,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2795
2723
|
}
|
2796
2724
|
if (batch->send_initial_metadata) {
|
2797
2725
|
call_attempt_tracer_->RecordSendInitialMetadata(
|
2798
|
-
batch->payload->send_initial_metadata.send_initial_metadata
|
2799
|
-
batch->payload->send_initial_metadata.send_initial_metadata_flags);
|
2726
|
+
batch->payload->send_initial_metadata.send_initial_metadata);
|
2800
2727
|
peer_string_ = batch->payload->send_initial_metadata.peer_string;
|
2801
2728
|
original_send_initial_metadata_on_complete_ = batch->on_complete;
|
2802
2729
|
GRPC_CLOSURE_INIT(&send_initial_metadata_on_complete_,
|
@@ -3171,8 +3098,6 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3171
3098
|
pending_batches_[0]->payload->send_initial_metadata;
|
3172
3099
|
grpc_metadata_batch* initial_metadata_batch =
|
3173
3100
|
send_initial_metadata.send_initial_metadata;
|
3174
|
-
const uint32_t send_initial_metadata_flags =
|
3175
|
-
send_initial_metadata.send_initial_metadata_flags;
|
3176
3101
|
// Perform LB pick.
|
3177
3102
|
LoadBalancingPolicy::PickArgs pick_args;
|
3178
3103
|
pick_args.path = path_.as_string_view();
|
@@ -3230,7 +3155,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3230
3155
|
return false;
|
3231
3156
|
},
|
3232
3157
|
// FailPick
|
3233
|
-
[this,
|
3158
|
+
[this, initial_metadata_batch,
|
3234
3159
|
&error](LoadBalancingPolicy::PickResult::Fail* fail_pick)
|
3235
3160
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
|
3236
3161
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
@@ -3239,8 +3164,8 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3239
3164
|
}
|
3240
3165
|
// If wait_for_ready is false, then the error indicates the RPC
|
3241
3166
|
// attempt's final status.
|
3242
|
-
if ((
|
3243
|
-
|
3167
|
+
if (!initial_metadata_batch->GetOrCreatePointer(WaitForReady())
|
3168
|
+
->value) {
|
3244
3169
|
grpc_error_handle lb_error =
|
3245
3170
|
absl_status_to_grpc_error(fail_pick->status);
|
3246
3171
|
*error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|