grpc 1.47.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 +183 -62
- data/include/grpc/compression.h +1 -1
- data/include/grpc/event_engine/event_engine.h +37 -25
- data/include/grpc/event_engine/slice_buffer.h +8 -2
- data/include/grpc/grpc.h +3 -3
- data/include/grpc/impl/codegen/compression_types.h +2 -1
- data/include/grpc/impl/codegen/connectivity_state.h +2 -1
- data/include/grpc/impl/codegen/gpr_types.h +2 -1
- data/include/grpc/impl/codegen/grpc_types.h +5 -9
- data/include/grpc/impl/codegen/port_platform.h +2 -7
- data/src/core/ext/filters/census/grpc_context.cc +3 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +20 -8
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +18 -2
- data/src/core/ext/filters/channel_idle/idle_filter_state.h +2 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -1
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +2 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +164 -261
- data/src/core/ext/filters/client_channel/client_channel.h +34 -12
- 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 +13 -5
- data/src/core/ext/filters/client_channel/connector.h +5 -6
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +6 -4
- data/src/core/ext/filters/client_channel/dynamic_filters.h +1 -1
- 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/address_filtering.cc +1 -1
- 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/client_load_reporting_filter.cc +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +170 -164
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +13 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +5 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +0 -1
- 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 +200 -96
- 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 +121 -131
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +153 -116
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +220 -181
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +10 -6
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +110 -119
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +133 -117
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +97 -87
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +114 -131
- 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 +84 -102
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +64 -76
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +172 -103
- data/src/core/ext/filters/client_channel/proxy_mapper.h +13 -14
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +18 -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 +7 -9
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +434 -148
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +179 -103
- 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 +29 -18
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +8 -18
- 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 +16 -18
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +4 -5
- 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 +5 -13
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +181 -175
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +3 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +39 -32
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +7 -10
- data/src/core/ext/filters/client_channel/retry_filter.cc +35 -43
- data/src/core/ext/filters/client_channel/retry_filter.h +1 -0
- 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 +7 -7
- data/src/core/ext/filters/client_channel/subchannel.cc +101 -138
- data/src/core/ext/filters/client_channel/subchannel.h +14 -30
- 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 +15 -101
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +5 -9
- data/src/core/ext/filters/deadline/deadline_filter.cc +18 -13
- data/src/core/ext/filters/deadline/deadline_filter.h +8 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +20 -3
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +9 -4
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +19 -11
- data/src/core/ext/filters/fault_injection/service_config_parser.h +19 -6
- data/src/core/ext/filters/http/client/http_client_filter.cc +17 -7
- data/src/core/ext/filters/http/client/http_client_filter.h +9 -2
- data/src/core/ext/filters/http/client_authority_filter.cc +11 -11
- data/src/core/ext/filters/http/client_authority_filter.h +6 -3
- data/src/core/ext/filters/http/http_filters_plugin.cc +9 -1
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +64 -187
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +1 -2
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +42 -106
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +1 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +17 -11
- data/src/core/ext/filters/http/server/http_server_filter.h +7 -2
- data/src/core/ext/filters/message_size/message_size_filter.cc +37 -21
- data/src/core/ext/filters/message_size/message_size_filter.h +13 -3
- data/src/core/ext/filters/rbac/rbac_filter.cc +14 -3
- data/src/core/ext/filters/rbac/rbac_filter.h +8 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +25 -10
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +15 -5
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +1 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +14 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +23 -5
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +1 -0
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +39 -66
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +77 -104
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +4 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +320 -635
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +4 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +207 -262
- data/src/core/ext/transport/chttp2/transport/flow_control.h +177 -289
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +57 -215
- data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -36
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +0 -41
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +7 -12
- 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 +9 -16
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +0 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +11 -112
- data/src/core/ext/transport/chttp2/transport/parsing.cc +51 -38
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +0 -4
- data/src/core/ext/transport/chttp2/transport/writing.cc +18 -21
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -1
- data/src/core/ext/transport/inproc/inproc_transport.cc +124 -154
- data/src/core/ext/transport/inproc/inproc_transport.h +3 -1
- 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.c +52 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +168 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +98 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +10 -8
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +66 -14
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +131 -16
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +632 -12
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +24 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +24 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +202 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +6 -2
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -1
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +11 -11
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +66 -22
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +9 -9
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +72 -24
- data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
- data/src/core/ext/upb-generated/google/api/http.upb.h +18 -6
- data/src/core/ext/upb-generated/google/api/httpbody.upb.c +1 -1
- data/src/core/ext/upb-generated/google/api/httpbody.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +44 -43
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +177 -55
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +2 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +18 -6
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +6 -6
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +54 -18
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +6 -2
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +2 -2
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +24 -8
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +6 -2
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +7 -7
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +60 -20
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +1 -1
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +6 -6
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +54 -18
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +2 -2
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +7 -7
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +42 -14
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +23 -11
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -3
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +7 -3
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -3
- data/src/core/ext/upb-generated/validate/validate.upb.c +22 -22
- data/src/core/ext/upb-generated/validate/validate.upb.h +139 -47
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +23 -11
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +7 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +27 -11
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +7 -3
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +2 -2
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +6 -6
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +54 -18
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +2 -2
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +6 -2
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +67 -274
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +0 -85
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +256 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +115 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +14 -11
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +107 -107
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +191 -187
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +156 -154
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +186 -183
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +136 -134
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +16 -16
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +162 -139
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +39 -31
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +12 -8
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +72 -75
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +0 -5
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +713 -670
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +150 -139
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +47 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +16 -12
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +46 -25
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +477 -466
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +21 -18
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +153 -84
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +113 -113
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +29 -28
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +69 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +92 -90
- data/src/core/ext/xds/certificate_provider_factory.h +6 -1
- data/src/core/ext/xds/certificate_provider_registry.cc +8 -8
- data/src/core/ext/xds/certificate_provider_registry.h +3 -1
- data/src/core/ext/xds/certificate_provider_store.cc +2 -0
- data/src/core/ext/xds/certificate_provider_store.h +9 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +9 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +8 -0
- data/src/core/ext/xds/upb_utils.h +0 -22
- data/src/core/ext/xds/xds_api.cc +68 -103
- data/src/core/ext/xds/xds_api.h +30 -32
- data/src/core/ext/xds/xds_bootstrap.cc +69 -69
- data/src/core/ext/xds/xds_bootstrap.h +37 -19
- data/src/core/ext/xds/xds_certificate_provider.cc +12 -3
- data/src/core/ext/xds/xds_certificate_provider.h +25 -1
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +15 -4
- data/src/core/ext/xds/xds_channel_stack_modifier.h +13 -1
- data/src/core/ext/xds/xds_client.cc +583 -1193
- data/src/core/ext/xds/xds_client.h +28 -42
- 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_client_stats.cc +3 -4
- data/src/core/ext/xds/xds_client_stats.h +4 -3
- data/src/core/ext/xds/xds_cluster.cc +107 -107
- data/src/core/ext/xds/xds_cluster.h +14 -5
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +23 -18
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +2 -8
- data/src/core/ext/xds/xds_common_types.cc +161 -123
- data/src/core/ext/xds/xds_common_types.h +16 -9
- data/src/core/ext/xds/xds_endpoint.cc +95 -85
- data/src/core/ext/xds/xds_endpoint.h +16 -8
- data/src/core/ext/xds/xds_http_fault_filter.cc +11 -16
- data/src/core/ext/xds/xds_http_fault_filter.h +5 -3
- data/src/core/ext/xds/xds_http_filters.cc +7 -0
- data/src/core/ext/xds/xds_http_filters.h +5 -5
- data/src/core/ext/xds/xds_http_rbac_filter.cc +52 -55
- data/src/core/ext/xds/xds_http_rbac_filter.h +8 -1
- data/src/core/ext/xds/xds_lb_policy_registry.cc +288 -0
- data/src/core/ext/xds/xds_lb_policy_registry.h +72 -0
- data/src/core/ext/xds/xds_listener.cc +355 -307
- data/src/core/ext/xds/xds_listener.h +13 -4
- data/src/core/ext/xds/xds_resource_type.h +16 -5
- data/src/core/ext/xds/xds_resource_type_impl.h +7 -3
- data/src/core/ext/xds/xds_route_config.cc +215 -184
- data/src/core/ext/xds/xds_route_config.h +39 -16
- data/src/core/ext/xds/xds_routing.cc +19 -6
- data/src/core/ext/xds/xds_routing.h +12 -9
- data/src/core/ext/xds/xds_server_config_fetcher.cc +124 -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 +24 -25
- data/src/core/lib/address_utils/parse_address.h +11 -7
- data/src/core/lib/address_utils/sockaddr_utils.cc +8 -7
- data/src/core/lib/address_utils/sockaddr_utils.h +2 -0
- data/src/core/lib/avl/avl.h +47 -25
- data/src/core/lib/backoff/backoff.cc +1 -1
- data/src/core/lib/backoff/backoff.h +1 -1
- data/src/core/lib/channel/call_tracer.h +4 -4
- data/src/core/lib/channel/channel_args.cc +88 -19
- data/src/core/lib/channel/channel_args.h +114 -62
- data/src/core/lib/channel/channel_args_preconditioning.cc +1 -0
- data/src/core/lib/channel/channel_fwd.h +26 -0
- data/src/core/lib/channel/channel_stack.cc +4 -5
- data/src/core/lib/channel/channel_stack.h +1 -11
- data/src/core/lib/channel/channel_stack_builder.cc +3 -3
- data/src/core/lib/channel/channel_stack_builder.h +4 -7
- data/src/core/lib/channel/channel_stack_builder_impl.cc +3 -5
- data/src/core/lib/channel/channel_stack_builder_impl.h +1 -0
- data/src/core/lib/channel/channelz.cc +28 -37
- data/src/core/lib/channel/channelz.h +11 -3
- data/src/core/lib/channel/channelz_registry.cc +4 -5
- data/src/core/lib/channel/connected_channel.cc +1 -0
- data/src/core/lib/channel/connected_channel.h +1 -0
- data/src/core/lib/channel/promise_based_filter.cc +11 -5
- data/src/core/lib/channel/promise_based_filter.h +2 -1
- data/src/core/lib/compression/compression.cc +6 -1
- data/src/core/lib/compression/compression_internal.cc +3 -6
- data/src/core/lib/compression/compression_internal.h +3 -2
- data/src/core/lib/compression/message_compress.cc +3 -1
- data/src/core/lib/compression/message_compress.h +2 -3
- data/src/core/lib/config/core_configuration.h +48 -35
- data/src/core/lib/debug/stats.cc +15 -18
- data/src/core/lib/debug/stats.h +13 -4
- data/src/core/lib/debug/stats_data.cc +2 -1
- data/src/core/lib/debug/stats_data.h +0 -4
- data/src/core/lib/debug/trace.h +13 -12
- data/src/core/lib/event_engine/default_event_engine.cc +71 -0
- data/src/core/lib/event_engine/{event_engine_factory.h → default_event_engine.h} +6 -10
- 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/posix_engine/posix_engine.cc +142 -0
- data/src/core/lib/event_engine/{iomgr_engine.h → posix_engine/posix_engine.h} +35 -32
- data/src/core/lib/event_engine/posix_engine/timer.cc +311 -0
- data/src/core/lib/event_engine/posix_engine/timer.h +193 -0
- data/src/core/lib/event_engine/posix_engine/timer_heap.cc +107 -0
- data/src/core/lib/event_engine/posix_engine/timer_heap.h +56 -0
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +290 -0
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +120 -0
- data/src/core/lib/event_engine/promise.h +78 -0
- data/src/core/lib/event_engine/socket_notifier.h +55 -0
- data/src/core/lib/event_engine/thread_pool.cc +158 -0
- data/src/core/lib/event_engine/thread_pool.h +81 -0
- 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/time_posix.cc +6 -9
- data/src/core/lib/gpr/time_windows.cc +10 -7
- 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 -68
- 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 +45 -30
- data/src/core/lib/gprpp/table.h +0 -1
- data/src/core/lib/gprpp/time.cc +8 -0
- data/src/core/lib/gprpp/time.h +4 -0
- data/src/core/lib/gprpp/time_averaged_stats.cc +60 -0
- data/src/core/lib/{iomgr → gprpp}/time_averaged_stats.h +29 -22
- data/src/core/lib/{iomgr → gprpp}/work_serializer.cc +34 -18
- data/src/core/lib/{iomgr → gprpp}/work_serializer.h +21 -28
- data/src/core/lib/http/format_request.cc +5 -4
- data/src/core/lib/http/format_request.h +1 -1
- data/src/core/lib/http/httpcli.cc +29 -35
- data/src/core/lib/http/httpcli.h +19 -3
- data/src/core/lib/http/httpcli_security_connector.cc +26 -14
- data/src/core/lib/http/httpcli_ssl_credentials.h +3 -1
- data/src/core/lib/http/parser.cc +6 -7
- data/src/core/lib/http/parser.h +3 -0
- data/src/core/lib/iomgr/call_combiner.cc +2 -28
- data/src/core/lib/iomgr/closure.h +0 -9
- data/src/core/lib/iomgr/combiner.cc +0 -20
- data/src/core/lib/iomgr/endpoint.h +1 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -2
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
- data/src/core/lib/iomgr/error.cc +6 -777
- data/src/core/lib/iomgr/error.h +6 -147
- data/src/core/lib/iomgr/error_cfstream.cc +0 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +57 -18
- data/src/core/lib/iomgr/ev_epoll1_linux.h +1 -1
- data/src/core/lib/iomgr/ev_poll_posix.cc +94 -61
- data/src/core/lib/iomgr/ev_poll_posix.h +2 -2
- data/src/core/lib/iomgr/ev_posix.cc +54 -92
- data/src/core/lib/iomgr/ev_posix.h +5 -3
- 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/fork_posix.cc +1 -1
- data/src/core/lib/iomgr/iomgr.cc +7 -0
- data/src/core/lib/iomgr/iomgr_posix.cc +1 -0
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -0
- data/src/core/lib/iomgr/load_file.cc +1 -1
- 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 +39 -9
- data/src/core/lib/iomgr/resolve_address_posix.h +19 -5
- data/src/core/lib/iomgr/resolve_address_windows.cc +41 -11
- 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_client.cc +12 -7
- data/src/core/lib/iomgr/tcp_client.h +24 -13
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +15 -9
- data/src/core/lib/iomgr/tcp_client_posix.cc +143 -25
- data/src/core/lib/iomgr/tcp_client_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_client_windows.cc +14 -10
- data/src/core/lib/iomgr/tcp_posix.cc +207 -33
- data/src/core/lib/iomgr/tcp_server_posix.cc +7 -7
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +12 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +2 -2
- data/src/core/lib/iomgr/tcp_server_windows.cc +7 -7
- data/src/core/lib/iomgr/tcp_windows.cc +5 -5
- data/src/core/lib/iomgr/timer_generic.cc +6 -8
- data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -2
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +15 -12
- data/src/core/lib/iomgr/wakeup_fd_posix.h +0 -2
- data/src/core/lib/json/json.h +19 -22
- data/src/core/lib/json/json_args.h +34 -0
- data/src/core/lib/json/json_object_loader.cc +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 -31
- 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 +48 -73
- 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 +16 -24
- data/src/core/lib/matchers/matchers.cc +6 -3
- data/src/core/lib/matchers/matchers.h +2 -0
- data/src/core/lib/promise/activity.cc +0 -1
- data/src/core/lib/promise/activity.h +56 -14
- 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/loop.h +1 -0
- data/src/core/lib/promise/map.h +0 -1
- data/src/core/lib/promise/promise.h +1 -0
- data/src/core/lib/promise/seq.h +25 -4
- data/src/core/lib/promise/sleep.cc +43 -42
- data/src/core/lib/promise/sleep.h +31 -28
- data/src/core/lib/promise/try_seq.h +26 -6
- data/src/core/lib/resolver/resolver.cc +0 -42
- data/src/core/lib/resolver/resolver.h +5 -12
- data/src/core/lib/resolver/resolver_factory.h +6 -4
- data/src/core/lib/resolver/resolver_registry.cc +3 -10
- data/src/core/lib/resolver/resolver_registry.h +12 -2
- data/src/core/lib/resolver/server_address.cc +19 -15
- data/src/core/lib/resolver/server_address.h +11 -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 +171 -73
- data/src/core/lib/resource_quota/memory_quota.h +109 -42
- 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/authorization_policy_provider.h +7 -0
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +4 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +17 -8
- data/src/core/lib/security/authorization/evaluate_args.h +6 -3
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +6 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +7 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +12 -1
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +13 -2
- data/src/core/lib/security/authorization/matchers.cc +20 -9
- data/src/core/lib/security/authorization/matchers.h +7 -0
- data/src/core/lib/security/authorization/rbac_policy.cc +4 -0
- data/src/core/lib/security/authorization/rbac_policy.h +7 -0
- data/src/core/lib/security/context/security_context.cc +5 -2
- data/src/core/lib/security/context/security_context.h +14 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +6 -5
- data/src/core/lib/security/credentials/alts/alts_credentials.h +8 -4
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +1 -3
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -4
- data/src/core/lib/security/credentials/call_creds_util.cc +8 -0
- data/src/core/lib/security/credentials/call_creds_util.h +1 -0
- data/src/core/lib/security/credentials/channel_creds_registry.h +6 -1
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +10 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +5 -9
- data/src/core/lib/security/credentials/composite/composite_credentials.h +17 -5
- data/src/core/lib/security/credentials/credentials.cc +4 -8
- data/src/core/lib/security/credentials/credentials.h +26 -20
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +45 -20
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +10 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +9 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +53 -29
- data/src/core/lib/security/credentials/external/external_account_credentials.h +11 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +15 -8
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +6 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +23 -9
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +10 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +10 -17
- data/src/core/lib/security/credentials/fake/fake_credentials.h +13 -5
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +55 -35
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +10 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +8 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.h +10 -0
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +7 -3
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +7 -3
- data/src/core/lib/security/credentials/jwt/json_token.cc +17 -5
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +12 -10
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +14 -0
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +37 -14
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -2
- data/src/core/lib/security/credentials/local/local_credentials.cc +7 -7
- data/src/core/lib/security/credentials/local/local_credentials.h +9 -3
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +41 -29
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +20 -0
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +7 -7
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +24 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +18 -21
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +15 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +6 -6
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +29 -10
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +15 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +9 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +6 -7
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -5
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +19 -26
- data/src/core/lib/security/credentials/tls/tls_credentials.h +7 -4
- data/src/core/lib/security/credentials/tls/tls_utils.cc +2 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +1 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +21 -31
- data/src/core/lib/security/credentials/xds/xds_credentials.h +16 -2
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +30 -18
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +6 -3
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +42 -38
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +3 -3
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +13 -4
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +21 -5
- data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +5 -3
- data/src/core/lib/security/security_connector/{load_system_roots_linux.cc → load_system_roots_supported.cc} +27 -19
- data/src/core/lib/security/security_connector/{load_system_roots_linux.h → load_system_roots_supported.h} +5 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +34 -13
- data/src/core/lib/security/security_connector/local/local_security_connector.h +7 -3
- data/src/core/lib/security/security_connector/security_connector.cc +20 -18
- data/src/core/lib/security/security_connector/security_connector.h +23 -9
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +21 -8
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -2
- data/src/core/lib/security/security_connector/ssl_utils.cc +12 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +10 -7
- data/src/core/lib/security/security_connector/ssl_utils_config.h +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +25 -17
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +27 -7
- data/src/core/lib/security/transport/auth_filters.h +8 -1
- data/src/core/lib/security/transport/client_auth_filter.cc +19 -11
- data/src/core/lib/security/transport/secure_endpoint.cc +63 -13
- data/src/core/lib/security/transport/secure_endpoint.h +4 -3
- data/src/core/lib/security/transport/security_handshaker.cc +70 -49
- data/src/core/lib/security/transport/security_handshaker.h +6 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +26 -4
- data/src/core/lib/security/util/json_util.cc +3 -2
- data/src/core/lib/security/util/json_util.h +0 -2
- data/src/core/lib/service_config/service_config.h +11 -0
- data/src/core/lib/service_config/service_config_call_data.h +2 -1
- data/src/core/lib/service_config/service_config_impl.cc +98 -97
- data/src/core/lib/service_config/service_config_impl.h +12 -16
- data/src/core/lib/service_config/service_config_parser.cc +26 -29
- 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/slice/slice_buffer.cc +30 -1
- data/src/core/lib/slice/slice_buffer.h +37 -6
- data/src/core/lib/slice/slice_string_helpers.cc +0 -20
- data/src/core/lib/slice/slice_string_helpers.h +0 -4
- data/src/core/lib/surface/call.cc +61 -117
- data/src/core/lib/surface/call.h +5 -1
- data/src/core/lib/surface/channel.cc +6 -6
- data/src/core/lib/surface/channel.h +3 -1
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +15 -16
- data/src/core/lib/surface/completion_queue.h +2 -4
- data/src/core/lib/surface/init.cc +2 -7
- data/src/core/lib/surface/lame_client.cc +3 -4
- data/src/core/lib/surface/lame_client.h +2 -2
- data/src/core/lib/surface/server.cc +21 -20
- data/src/core/lib/surface/server.h +11 -8
- data/src/core/lib/surface/validate_metadata.cc +5 -15
- 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 +9 -39
- data/src/core/lib/transport/handshaker.cc +10 -12
- 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 +20 -20
- 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 +14 -20
- data/src/core/lib/transport/transport.cc +0 -3
- data/src/core/lib/transport/transport.h +20 -21
- data/src/core/lib/transport/transport_fwd.h +20 -0
- data/src/core/lib/transport/transport_impl.h +1 -0
- data/src/core/lib/transport/transport_op_string.cc +9 -9
- 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 +15 -8
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +9 -1
- data/src/core/tsi/fake_transport_security.cc +66 -31
- data/src/core/tsi/fake_transport_security.h +6 -0
- 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 +48 -24
- data/src/core/tsi/transport_security.cc +18 -6
- data/src/core/tsi/transport_security.h +2 -1
- data/src/core/tsi/transport_security_grpc.cc +3 -2
- data/src/core/tsi/transport_security_grpc.h +5 -2
- data/src/core/tsi/transport_security_interface.h +17 -5
- data/src/ruby/ext/grpc/ext-export-truffleruby.clang +2 -0
- data/src/ruby/ext/grpc/ext-export-truffleruby.gcc +7 -0
- data/src/ruby/ext/grpc/ext-export.clang +1 -0
- data/src/ruby/ext/grpc/ext-export.gcc +1 -0
- data/src/ruby/ext/grpc/extconf.rb +51 -18
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
- data/src/ruby/ext/grpc/rb_loader.c +6 -2
- data/src/ruby/lib/grpc/errors.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -0
- data/src/ruby/spec/generic/client_stub_spec.rb +23 -23
- data/third_party/abseil-cpp/absl/algorithm/container.h +1 -1
- data/third_party/abseil-cpp/absl/base/attributes.h +49 -22
- data/third_party/abseil-cpp/absl/base/casts.h +61 -68
- data/third_party/abseil-cpp/absl/base/config.h +182 -41
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +12 -42
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +67 -2
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +3 -3
- data/third_party/abseil-cpp/absl/base/internal/endian.h +17 -62
- data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +2 -0
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +54 -0
- data/third_party/abseil-cpp/absl/base/internal/prefetch.h +138 -0
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +29 -22
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +13 -12
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +3 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +8 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -5
- data/third_party/abseil-cpp/absl/base/internal/strerror.cc +88 -0
- data/third_party/abseil-cpp/absl/base/internal/strerror.h +39 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +0 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +2 -1
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +6 -7
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +12 -3
- data/third_party/abseil-cpp/absl/base/log_severity.cc +28 -0
- data/third_party/abseil-cpp/absl/base/log_severity.h +51 -0
- data/third_party/abseil-cpp/absl/base/optimization.h +19 -11
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +2 -2
- data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +11 -4
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +15 -9
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +20 -9
- data/third_party/abseil-cpp/absl/container/internal/common.h +6 -5
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +10 -28
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +68 -20
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +29 -11
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +59 -38
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +4 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +515 -184
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +45 -88
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +4 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +3 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +2 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +20 -18
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +15 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +6 -1
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +46 -7
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +313 -0
- data/third_party/abseil-cpp/absl/functional/bind_front.h +10 -1
- data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -1
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +857 -0
- data/third_party/abseil-cpp/absl/hash/hash.h +82 -8
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +218 -23
- data/third_party/abseil-cpp/absl/numeric/bits.h +2 -1
- data/third_party/abseil-cpp/absl/numeric/int128.cc +4 -2
- data/third_party/abseil-cpp/absl/numeric/int128.h +2 -2
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +21 -6
- data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +4 -4
- data/third_party/abseil-cpp/absl/random/distributions.h +3 -3
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +3 -0
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +2 -1
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +2 -2
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +59 -48
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/randen.h +5 -11
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -2
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +48 -23
- data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +24 -26
- data/third_party/abseil-cpp/absl/random/internal/traits.h +53 -5
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +5 -5
- data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +33 -48
- data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +9 -10
- data/third_party/abseil-cpp/absl/random/poisson_distribution.h +7 -4
- data/third_party/abseil-cpp/absl/random/seed_sequences.h +1 -0
- data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +2 -2
- data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/random/zipf_distribution.h +4 -3
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +17 -0
- data/third_party/abseil-cpp/absl/status/status.cc +174 -2
- data/third_party/abseil-cpp/absl/status/status.h +22 -12
- data/third_party/abseil-cpp/absl/status/statusor.h +9 -3
- data/third_party/abseil-cpp/absl/strings/ascii.h +4 -4
- data/third_party/abseil-cpp/absl/strings/cord.cc +194 -913
- data/third_party/abseil-cpp/absl/strings/cord.h +202 -81
- data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +188 -0
- data/third_party/abseil-cpp/absl/strings/cord_analysis.h +44 -0
- data/third_party/abseil-cpp/absl/strings/cord_buffer.cc +30 -0
- data/third_party/abseil-cpp/absl/strings/cord_buffer.h +572 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +20 -32
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +123 -88
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +149 -49
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +44 -59
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +3 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +3 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +5 -4
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +7 -74
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +54 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +102 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +58 -17
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +13 -11
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +11 -38
- data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +1 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +6 -5
- data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +38 -7
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +4 -5
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +5 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +2 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +9 -6
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +10 -2
- data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/numbers.cc +8 -8
- data/third_party/abseil-cpp/absl/strings/numbers.h +26 -23
- data/third_party/abseil-cpp/absl/strings/str_cat.h +20 -13
- data/third_party/abseil-cpp/absl/strings/str_join.h +9 -15
- data/third_party/abseil-cpp/absl/strings/str_split.h +1 -2
- data/third_party/abseil-cpp/absl/strings/string_view.cc +2 -13
- data/third_party/abseil-cpp/absl/strings/string_view.h +3 -2
- data/third_party/abseil-cpp/absl/strings/strip.h +8 -6
- data/third_party/abseil-cpp/absl/strings/substitute.h +10 -2
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +9 -6
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -6
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -25
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +10 -4
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -40
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +17 -9
- data/third_party/abseil-cpp/absl/synchronization/notification.h +3 -2
- data/third_party/abseil-cpp/absl/time/duration.cc +5 -4
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +11 -7
- data/third_party/abseil-cpp/absl/time/time.h +16 -12
- data/third_party/abseil-cpp/absl/types/internal/optional.h +8 -0
- data/third_party/abseil-cpp/absl/types/internal/variant.h +3 -3
- data/third_party/abseil-cpp/absl/types/optional.h +17 -14
- data/third_party/abseil-cpp/absl/types/span.h +2 -1
- 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 +113 -37
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -50
- data/src/core/lib/event_engine/event_engine.cc +0 -62
- data/src/core/lib/event_engine/iomgr_engine.cc +0 -206
- 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/promise/detail/switch.h +0 -1455
- data/src/core/lib/slice/slice_split.cc +0 -103
- data/src/core/lib/slice/slice_split.h +0 -36
- data/src/core/lib/transport/byte_stream.cc +0 -165
- data/src/core/lib/transport/byte_stream.h +0 -170
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +0 -140
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +0 -100
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +0 -50
@@ -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,8 +27,8 @@
|
|
28
27
|
#include <set>
|
29
28
|
#include <vector>
|
30
29
|
|
31
|
-
#include "absl/container/inlined_vector.h"
|
32
30
|
#include "absl/memory/memory.h"
|
31
|
+
#include "absl/status/status.h"
|
33
32
|
#include "absl/status/statusor.h"
|
34
33
|
#include "absl/strings/cord.h"
|
35
34
|
#include "absl/strings/numbers.h"
|
@@ -42,7 +41,6 @@
|
|
42
41
|
#include <grpc/impl/codegen/gpr_types.h>
|
43
42
|
#include <grpc/slice.h>
|
44
43
|
#include <grpc/status.h>
|
45
|
-
#include <grpc/support/alloc.h>
|
46
44
|
#include <grpc/support/log.h>
|
47
45
|
#include <grpc/support/string_util.h>
|
48
46
|
|
@@ -53,13 +51,11 @@
|
|
53
51
|
#include "src/core/ext/filters/client_channel/dynamic_filters.h"
|
54
52
|
#include "src/core/ext/filters/client_channel/global_subchannel_pool.h"
|
55
53
|
#include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
|
56
|
-
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
|
57
54
|
#include "src/core/ext/filters/client_channel/local_subchannel_pool.h"
|
58
55
|
#include "src/core/ext/filters/client_channel/proxy_mapper_registry.h"
|
59
56
|
#include "src/core/ext/filters/client_channel/resolver_result_parsing.h"
|
60
57
|
#include "src/core/ext/filters/client_channel/retry_filter.h"
|
61
58
|
#include "src/core/ext/filters/client_channel/subchannel.h"
|
62
|
-
#include "src/core/ext/filters/client_channel/subchannel_interface.h"
|
63
59
|
#include "src/core/ext/filters/client_channel/subchannel_interface_internal.h"
|
64
60
|
#include "src/core/ext/filters/deadline/deadline_filter.h"
|
65
61
|
#include "src/core/lib/channel/channel_args.h"
|
@@ -70,11 +66,13 @@
|
|
70
66
|
#include "src/core/lib/gpr/useful.h"
|
71
67
|
#include "src/core/lib/gprpp/debug_location.h"
|
72
68
|
#include "src/core/lib/gprpp/sync.h"
|
69
|
+
#include "src/core/lib/gprpp/work_serializer.h"
|
73
70
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
74
71
|
#include "src/core/lib/iomgr/polling_entity.h"
|
75
72
|
#include "src/core/lib/iomgr/pollset_set.h"
|
76
|
-
#include "src/core/lib/iomgr/work_serializer.h"
|
77
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"
|
78
76
|
#include "src/core/lib/profiling/timers.h"
|
79
77
|
#include "src/core/lib/resolver/resolver_registry.h"
|
80
78
|
#include "src/core/lib/resolver/server_address.h"
|
@@ -96,9 +94,7 @@
|
|
96
94
|
|
97
95
|
namespace grpc_core {
|
98
96
|
|
99
|
-
using internal::ClientChannelGlobalParsedConfig;
|
100
97
|
using internal::ClientChannelMethodParsedConfig;
|
101
|
-
using internal::ClientChannelServiceConfigParser;
|
102
98
|
|
103
99
|
TraceFlag grpc_client_channel_trace(false, "client_channel");
|
104
100
|
TraceFlag grpc_client_channel_call_trace(false, "client_channel_call");
|
@@ -267,28 +263,6 @@ const grpc_channel_filter ClientChannel::kFilterVtable = {
|
|
267
263
|
|
268
264
|
namespace {
|
269
265
|
|
270
|
-
// Channel arg pointer vtable for GRPC_ARG_CLIENT_CHANNEL.
|
271
|
-
void* ClientChannelArgCopy(void* p) { return p; }
|
272
|
-
void ClientChannelArgDestroy(void* /*p*/) {}
|
273
|
-
int ClientChannelArgCmp(void* p, void* q) { return QsortCompare(p, q); }
|
274
|
-
const grpc_arg_pointer_vtable kClientChannelArgPointerVtable = {
|
275
|
-
ClientChannelArgCopy, ClientChannelArgDestroy, ClientChannelArgCmp};
|
276
|
-
|
277
|
-
// Channel arg pointer vtable for GRPC_ARG_SERVICE_CONFIG_OBJ.
|
278
|
-
void* ServiceConfigObjArgCopy(void* p) {
|
279
|
-
auto* service_config = static_cast<ServiceConfig*>(p);
|
280
|
-
service_config->Ref().release();
|
281
|
-
return p;
|
282
|
-
}
|
283
|
-
void ServiceConfigObjArgDestroy(void* p) {
|
284
|
-
auto* service_config = static_cast<ServiceConfig*>(p);
|
285
|
-
service_config->Unref();
|
286
|
-
}
|
287
|
-
int ServiceConfigObjArgCmp(void* p, void* q) { return QsortCompare(p, q); }
|
288
|
-
const grpc_arg_pointer_vtable kServiceConfigObjArgPointerVtable = {
|
289
|
-
ServiceConfigObjArgCopy, ServiceConfigObjArgDestroy,
|
290
|
-
ServiceConfigObjArgCmp};
|
291
|
-
|
292
266
|
class DynamicTerminationFilter {
|
293
267
|
public:
|
294
268
|
class CallData;
|
@@ -507,21 +481,15 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
507
481
|
GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_, "SubchannelWrapper");
|
508
482
|
}
|
509
483
|
|
510
|
-
grpc_connectivity_state CheckConnectivityState() override {
|
511
|
-
return subchannel_->CheckConnectivityState(health_check_service_name_);
|
512
|
-
}
|
513
|
-
|
514
484
|
void WatchConnectivityState(
|
515
|
-
grpc_connectivity_state initial_state,
|
516
485
|
std::unique_ptr<ConnectivityStateWatcherInterface> watcher) override
|
517
486
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
518
487
|
auto& watcher_wrapper = watcher_map_[watcher.get()];
|
519
488
|
GPR_ASSERT(watcher_wrapper == nullptr);
|
520
489
|
watcher_wrapper = new WatcherWrapper(std::move(watcher),
|
521
|
-
Ref(DEBUG_LOCATION, "WatcherWrapper")
|
522
|
-
initial_state);
|
490
|
+
Ref(DEBUG_LOCATION, "WatcherWrapper"));
|
523
491
|
subchannel_->WatchConnectivityState(
|
524
|
-
|
492
|
+
health_check_service_name_,
|
525
493
|
RefCountedPtr<Subchannel::ConnectivityStateWatcherInterface>(
|
526
494
|
watcher_wrapper));
|
527
495
|
}
|
@@ -552,9 +520,7 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
552
520
|
data_watchers_.push_back(std::move(internal_watcher));
|
553
521
|
}
|
554
522
|
|
555
|
-
|
556
|
-
return subchannel_->channel_args();
|
557
|
-
}
|
523
|
+
ChannelArgs channel_args() override { return subchannel_->channel_args(); }
|
558
524
|
|
559
525
|
void ThrottleKeepaliveTime(int new_keepalive_time) {
|
560
526
|
subchannel_->ThrottleKeepaliveTime(new_keepalive_time);
|
@@ -580,11 +546,8 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
580
546
|
WatcherWrapper(
|
581
547
|
std::unique_ptr<SubchannelInterface::ConnectivityStateWatcherInterface>
|
582
548
|
watcher,
|
583
|
-
RefCountedPtr<SubchannelWrapper> parent
|
584
|
-
|
585
|
-
: watcher_(std::move(watcher)),
|
586
|
-
parent_(std::move(parent)),
|
587
|
-
last_seen_state_(initial_state) {}
|
549
|
+
RefCountedPtr<SubchannelWrapper> parent)
|
550
|
+
: watcher_(std::move(watcher)), parent_(std::move(parent)) {}
|
588
551
|
|
589
552
|
~WatcherWrapper() override {
|
590
553
|
auto* parent = parent_.release(); // ref owned by lambda
|
@@ -621,14 +584,11 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
621
584
|
}
|
622
585
|
|
623
586
|
WatcherWrapper* MakeReplacement() {
|
624
|
-
auto* replacement =
|
625
|
-
new WatcherWrapper(std::move(watcher_), parent_, last_seen_state_);
|
587
|
+
auto* replacement = new WatcherWrapper(std::move(watcher_), parent_);
|
626
588
|
replacement_ = replacement;
|
627
589
|
return replacement;
|
628
590
|
}
|
629
591
|
|
630
|
-
grpc_connectivity_state last_seen_state() const { return last_seen_state_; }
|
631
|
-
|
632
592
|
private:
|
633
593
|
void ApplyUpdateInControlPlaneWorkSerializer()
|
634
594
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*parent_->chand_->work_serializer_) {
|
@@ -670,15 +630,21 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
670
630
|
// Ignore update if the parent WatcherWrapper has been replaced
|
671
631
|
// since this callback was scheduled.
|
672
632
|
if (watcher_ != nullptr) {
|
673
|
-
|
674
|
-
|
633
|
+
// Propagate status only in state TF.
|
634
|
+
// We specifically want to avoid propagating the status for
|
635
|
+
// state IDLE that the real subchannel gave us only for the
|
636
|
+
// purpose of keepalive propagation.
|
637
|
+
if (state_change.state != GRPC_CHANNEL_TRANSIENT_FAILURE) {
|
638
|
+
state_change.status = absl::OkStatus();
|
639
|
+
}
|
640
|
+
watcher_->OnConnectivityStateChange(state_change.state,
|
641
|
+
state_change.status);
|
675
642
|
}
|
676
643
|
}
|
677
644
|
|
678
645
|
std::unique_ptr<SubchannelInterface::ConnectivityStateWatcherInterface>
|
679
646
|
watcher_;
|
680
647
|
RefCountedPtr<SubchannelWrapper> parent_;
|
681
|
-
grpc_connectivity_state last_seen_state_;
|
682
648
|
WatcherWrapper* replacement_ = nullptr;
|
683
649
|
};
|
684
650
|
|
@@ -886,67 +852,23 @@ class ClientChannel::ClientChannelControlHelper
|
|
886
852
|
}
|
887
853
|
|
888
854
|
RefCountedPtr<SubchannelInterface> CreateSubchannel(
|
889
|
-
ServerAddress address, const
|
855
|
+
ServerAddress address, const ChannelArgs& args) override
|
890
856
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
891
857
|
if (chand_->resolver_ == nullptr) return nullptr; // Shutting down.
|
892
858
|
// Determine health check service name.
|
893
859
|
absl::optional<std::string> health_check_service_name;
|
894
|
-
|
895
|
-
|
896
|
-
|
897
|
-
bool inhibit_health_checking = grpc_channel_args_find_bool(
|
898
|
-
&args, GRPC_ARG_INHIBIT_HEALTH_CHECKING, false);
|
899
|
-
if (!inhibit_health_checking) {
|
900
|
-
health_check_service_name = health_check_service_name_arg;
|
901
|
-
}
|
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);
|
902
863
|
}
|
903
864
|
// Construct channel args for subchannel.
|
904
|
-
|
905
|
-
|
906
|
-
|
907
|
-
GRPC_ARG_INHIBIT_HEALTH_CHECKING,
|
908
|
-
GRPC_ARG_CHANNELZ_CHANNEL_NODE,
|
909
|
-
};
|
910
|
-
// Add channel args needed for the subchannel.
|
911
|
-
absl::InlinedVector<grpc_arg, 2> args_to_add = {
|
912
|
-
SubchannelPoolInterface::CreateChannelArg(
|
913
|
-
chand_->subchannel_pool_.get()),
|
914
|
-
};
|
915
|
-
// Check if default authority arg is already set.
|
916
|
-
const char* default_authority =
|
917
|
-
grpc_channel_args_find_string(&args, GRPC_ARG_DEFAULT_AUTHORITY);
|
918
|
-
// Add args from subchannel address.
|
919
|
-
if (address.args() != nullptr) {
|
920
|
-
for (size_t j = 0; j < address.args()->num_args; ++j) {
|
921
|
-
grpc_arg& arg = address.args()->args[j];
|
922
|
-
if (strcmp(arg.key, GRPC_ARG_DEFAULT_AUTHORITY) == 0) {
|
923
|
-
// Don't add default authority arg from subchannel address if
|
924
|
-
// it's already set at the channel level -- the value from the
|
925
|
-
// application should take precedence over what is set by the
|
926
|
-
// resolver.
|
927
|
-
if (default_authority != nullptr) continue;
|
928
|
-
default_authority = arg.value.string;
|
929
|
-
}
|
930
|
-
args_to_add.emplace_back(arg);
|
931
|
-
}
|
932
|
-
}
|
933
|
-
// If we haven't already set the default authority arg, add it from
|
934
|
-
// the channel.
|
935
|
-
if (default_authority == nullptr) {
|
936
|
-
// Remove it, just in case it's actually present but is the wrong type.
|
937
|
-
args_to_remove.push_back(GRPC_ARG_DEFAULT_AUTHORITY);
|
938
|
-
args_to_add.push_back(grpc_channel_arg_string_create(
|
939
|
-
const_cast<char*>(GRPC_ARG_DEFAULT_AUTHORITY),
|
940
|
-
const_cast<char*>(chand_->default_authority_.c_str())));
|
941
|
-
}
|
942
|
-
grpc_channel_args* new_args = grpc_channel_args_copy_and_add_and_remove(
|
943
|
-
&args, args_to_remove.data(), args_to_remove.size(), args_to_add.data(),
|
944
|
-
args_to_add.size());
|
865
|
+
ChannelArgs subchannel_args = ClientChannel::MakeSubchannelArgs(
|
866
|
+
args, address.args(), chand_->subchannel_pool_,
|
867
|
+
chand_->default_authority_);
|
945
868
|
// Create subchannel.
|
946
869
|
RefCountedPtr<Subchannel> subchannel =
|
947
870
|
chand_->client_channel_factory_->CreateSubchannel(address.address(),
|
948
|
-
|
949
|
-
grpc_channel_args_destroy(new_args);
|
871
|
+
subchannel_args);
|
950
872
|
if (subchannel == nullptr) return nullptr;
|
951
873
|
// Make sure the subchannel has updated keepalive time.
|
952
874
|
subchannel->ThrottleKeepaliveTime(chand_->keepalive_time_);
|
@@ -961,7 +883,7 @@ class ClientChannel::ClientChannelControlHelper
|
|
961
883
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
962
884
|
if (chand_->resolver_ == nullptr) return; // Shutting down.
|
963
885
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
964
|
-
const char* extra = chand_->disconnect_error_
|
886
|
+
const char* extra = GRPC_ERROR_IS_NONE(chand_->disconnect_error_)
|
965
887
|
? ""
|
966
888
|
: " (ignoring -- channel shutting down)";
|
967
889
|
gpr_log(GPR_INFO, "chand=%p: update: state=%s status=(%s) picker=%p%s",
|
@@ -969,7 +891,7 @@ class ClientChannel::ClientChannelControlHelper
|
|
969
891
|
picker.get(), extra);
|
970
892
|
}
|
971
893
|
// Do update only if not shutting down.
|
972
|
-
if (chand_->disconnect_error_
|
894
|
+
if (GRPC_ERROR_IS_NONE(chand_->disconnect_error_)) {
|
973
895
|
chand_->UpdateStateAndPickerLocked(state, status, "helper",
|
974
896
|
std::move(picker));
|
975
897
|
}
|
@@ -1037,36 +959,28 @@ void ClientChannel::Destroy(grpc_channel_element* elem) {
|
|
1037
959
|
namespace {
|
1038
960
|
|
1039
961
|
RefCountedPtr<SubchannelPoolInterface> GetSubchannelPool(
|
1040
|
-
const
|
1041
|
-
|
1042
|
-
args, GRPC_ARG_USE_LOCAL_SUBCHANNEL_POOL, false);
|
1043
|
-
if (use_local_subchannel_pool) {
|
962
|
+
const ChannelArgs& args) {
|
963
|
+
if (args.GetBool(GRPC_ARG_USE_LOCAL_SUBCHANNEL_POOL).value_or(false)) {
|
1044
964
|
return MakeRefCounted<LocalSubchannelPool>();
|
1045
965
|
}
|
1046
966
|
return GlobalSubchannelPool::instance();
|
1047
967
|
}
|
1048
968
|
|
1049
|
-
channelz::ChannelNode* GetChannelzNode(const grpc_channel_args* args) {
|
1050
|
-
return grpc_channel_args_find_pointer<channelz::ChannelNode>(
|
1051
|
-
args, GRPC_ARG_CHANNELZ_CHANNEL_NODE);
|
1052
|
-
}
|
1053
|
-
|
1054
969
|
} // namespace
|
1055
970
|
|
1056
971
|
ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
1057
972
|
grpc_error_handle* error)
|
1058
|
-
:
|
1059
|
-
|
973
|
+
: channel_args_(ChannelArgs::FromC(args->channel_args)),
|
974
|
+
deadline_checking_enabled_(grpc_deadline_checking_enabled(channel_args_)),
|
1060
975
|
owning_stack_(args->channel_stack),
|
1061
|
-
client_channel_factory_(
|
1062
|
-
|
1063
|
-
channelz_node_(GetChannelzNode(args->channel_args)),
|
976
|
+
client_channel_factory_(channel_args_.GetObject<ClientChannelFactory>()),
|
977
|
+
channelz_node_(channel_args_.GetObject<channelz::ChannelNode>()),
|
1064
978
|
interested_parties_(grpc_pollset_set_create()),
|
1065
979
|
service_config_parser_index_(
|
1066
980
|
internal::ClientChannelServiceConfigParser::ParserIndex()),
|
1067
981
|
work_serializer_(std::make_shared<WorkSerializer>()),
|
1068
982
|
state_tracker_("client_channel", GRPC_CHANNEL_IDLE),
|
1069
|
-
subchannel_pool_(GetSubchannelPool(
|
983
|
+
subchannel_pool_(GetSubchannelPool(channel_args_)) {
|
1070
984
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1071
985
|
gpr_log(GPR_INFO, "chand=%p: creating client_channel for channel stack %p",
|
1072
986
|
this, owning_stack_);
|
@@ -1081,34 +995,28 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
|
1081
995
|
}
|
1082
996
|
// Get default service config. If none is specified via the client API,
|
1083
997
|
// we use an empty config.
|
1084
|
-
|
1085
|
-
|
1086
|
-
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 = "{}";
|
1087
1001
|
*error = GRPC_ERROR_NONE;
|
1088
|
-
|
1089
|
-
ServiceConfigImpl::Create(
|
1090
|
-
if (
|
1091
|
-
|
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());
|
1092
1006
|
return;
|
1093
1007
|
}
|
1008
|
+
default_service_config_ = std::move(*service_config);
|
1094
1009
|
// Get URI to resolve, using proxy mapper if needed.
|
1095
|
-
|
1096
|
-
|
1097
|
-
if (server_uri
|
1010
|
+
absl::optional<std::string> server_uri =
|
1011
|
+
channel_args_.GetOwnedString(GRPC_ARG_SERVER_URI);
|
1012
|
+
if (!server_uri.has_value()) {
|
1098
1013
|
*error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1099
1014
|
"target URI channel arg missing or wrong type in client channel "
|
1100
1015
|
"filter");
|
1101
1016
|
return;
|
1102
1017
|
}
|
1103
|
-
uri_to_resolve_ = server_uri
|
1104
|
-
|
1105
|
-
grpc_channel_args* new_args = nullptr;
|
1106
|
-
ProxyMapperRegistry::MapName(server_uri, args->channel_args, &proxy_name,
|
1107
|
-
&new_args);
|
1108
|
-
if (proxy_name != nullptr) {
|
1109
|
-
uri_to_resolve_ = proxy_name;
|
1110
|
-
gpr_free(proxy_name);
|
1111
|
-
}
|
1018
|
+
uri_to_resolve_ = ProxyMapperRegistry::MapName(*server_uri, &channel_args_)
|
1019
|
+
.value_or(*server_uri);
|
1112
1020
|
// Make sure the URI to resolve is valid, so that we know that
|
1113
1021
|
// resolver creation will succeed later.
|
1114
1022
|
if (!CoreConfiguration::Get().resolver_registry().IsValidTarget(
|
@@ -1119,23 +1027,23 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
|
1119
1027
|
}
|
1120
1028
|
// Strip out service config channel arg, so that it doesn't affect
|
1121
1029
|
// subchannel uniqueness when the args flow down to that layer.
|
1122
|
-
|
1123
|
-
channel_args_ = grpc_channel_args_copy_and_remove(
|
1124
|
-
new_args != nullptr ? new_args : args->channel_args, &arg_to_remove, 1);
|
1125
|
-
grpc_channel_args_destroy(new_args);
|
1030
|
+
channel_args_ = channel_args_.Remove(GRPC_ARG_SERVICE_CONFIG);
|
1126
1031
|
// Set initial keepalive time.
|
1127
|
-
|
1128
|
-
|
1129
|
-
|
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
|
+
}
|
1130
1038
|
// Set default authority.
|
1131
|
-
|
1132
|
-
|
1133
|
-
if (default_authority
|
1039
|
+
absl::optional<std::string> default_authority =
|
1040
|
+
channel_args_.GetOwnedString(GRPC_ARG_DEFAULT_AUTHORITY);
|
1041
|
+
if (!default_authority.has_value()) {
|
1134
1042
|
default_authority_ =
|
1135
1043
|
CoreConfiguration::Get().resolver_registry().GetDefaultAuthority(
|
1136
|
-
server_uri);
|
1044
|
+
*server_uri);
|
1137
1045
|
} else {
|
1138
|
-
default_authority_ = default_authority;
|
1046
|
+
default_authority_ = std::move(*default_authority);
|
1139
1047
|
}
|
1140
1048
|
// Success.
|
1141
1049
|
*error = GRPC_ERROR_NONE;
|
@@ -1146,7 +1054,6 @@ ClientChannel::~ClientChannel() {
|
|
1146
1054
|
gpr_log(GPR_INFO, "chand=%p: destroying channel", this);
|
1147
1055
|
}
|
1148
1056
|
DestroyResolverAndLbPolicyLocked();
|
1149
|
-
grpc_channel_args_destroy(channel_args_);
|
1150
1057
|
// Stop backup polling.
|
1151
1058
|
grpc_client_channel_stop_backup_polling(interested_parties_);
|
1152
1059
|
grpc_pollset_set_destroy(interested_parties_);
|
@@ -1164,6 +1071,29 @@ ClientChannel::CreateLoadBalancedCall(
|
|
1164
1071
|
call_dispatch_controller, is_transparent_retry));
|
1165
1072
|
}
|
1166
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
|
+
|
1167
1097
|
namespace {
|
1168
1098
|
|
1169
1099
|
RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
|
@@ -1175,41 +1105,39 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
|
|
1175
1105
|
}
|
1176
1106
|
// Try the deprecated LB policy name from the service config.
|
1177
1107
|
// If not, try the setting from channel args.
|
1178
|
-
|
1108
|
+
absl::optional<absl::string_view> policy_name;
|
1179
1109
|
if (!parsed_service_config->parsed_deprecated_lb_policy().empty()) {
|
1180
|
-
policy_name = parsed_service_config->parsed_deprecated_lb_policy()
|
1110
|
+
policy_name = parsed_service_config->parsed_deprecated_lb_policy();
|
1181
1111
|
} else {
|
1182
|
-
policy_name =
|
1183
|
-
GRPC_ARG_LB_POLICY_NAME);
|
1112
|
+
policy_name = resolver_result.args.GetString(GRPC_ARG_LB_POLICY_NAME);
|
1184
1113
|
bool requires_config = false;
|
1185
|
-
if (policy_name
|
1114
|
+
if (policy_name.has_value() &&
|
1186
1115
|
(!LoadBalancingPolicyRegistry::LoadBalancingPolicyExists(
|
1187
|
-
policy_name, &requires_config) ||
|
1116
|
+
*policy_name, &requires_config) ||
|
1188
1117
|
requires_config)) {
|
1189
1118
|
if (requires_config) {
|
1190
1119
|
gpr_log(GPR_ERROR,
|
1191
1120
|
"LB policy: %s passed through channel_args must not "
|
1192
1121
|
"require a config. Using pick_first instead.",
|
1193
|
-
policy_name);
|
1122
|
+
std::string(*policy_name).c_str());
|
1194
1123
|
} else {
|
1195
1124
|
gpr_log(GPR_ERROR,
|
1196
1125
|
"LB policy: %s passed through channel_args does not exist. "
|
1197
1126
|
"Using pick_first instead.",
|
1198
|
-
policy_name);
|
1127
|
+
std::string(*policy_name).c_str());
|
1199
1128
|
}
|
1200
1129
|
policy_name = "pick_first";
|
1201
1130
|
}
|
1202
1131
|
}
|
1203
1132
|
// Use pick_first if nothing was specified and we didn't select grpclb
|
1204
1133
|
// above.
|
1205
|
-
if (policy_name
|
1134
|
+
if (!policy_name.has_value()) policy_name = "pick_first";
|
1206
1135
|
// Now that we have the policy name, construct an empty config for it.
|
1207
1136
|
Json config_json = Json::Array{Json::Object{
|
1208
|
-
{policy_name, Json::Object{}},
|
1137
|
+
{std::string(*policy_name), Json::Object{}},
|
1209
1138
|
}};
|
1210
|
-
|
1211
|
-
|
1212
|
-
config_json, &parse_error);
|
1139
|
+
auto lb_policy_config =
|
1140
|
+
LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(config_json);
|
1213
1141
|
// The policy name came from one of three places:
|
1214
1142
|
// - The deprecated loadBalancingPolicy field in the service config,
|
1215
1143
|
// in which case the code in ClientChannelServiceConfigParser
|
@@ -1219,9 +1147,8 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
|
|
1219
1147
|
// - A channel arg, in which case we check that the specified policy exists
|
1220
1148
|
// and accepts an empty config. If not, we revert to using pick_first
|
1221
1149
|
// lb_policy
|
1222
|
-
GPR_ASSERT(lb_policy_config
|
1223
|
-
|
1224
|
-
return lb_policy_config;
|
1150
|
+
GPR_ASSERT(lb_policy_config.ok());
|
1151
|
+
return std::move(*lb_policy_config);
|
1225
1152
|
}
|
1226
1153
|
|
1227
1154
|
} // namespace
|
@@ -1241,7 +1168,7 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1241
1168
|
// (d) Address resolution that causes a new LB policy to be created.
|
1242
1169
|
//
|
1243
1170
|
// We track a list of strings to eventually be concatenated and traced.
|
1244
|
-
|
1171
|
+
std::vector<const char*> trace_strings;
|
1245
1172
|
const bool resolution_contains_addresses =
|
1246
1173
|
result.addresses.ok() && !result.addresses->empty();
|
1247
1174
|
if (!resolution_contains_addresses &&
|
@@ -1296,7 +1223,7 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1296
1223
|
} else {
|
1297
1224
|
// Use ServiceConfig and ConfigSelector returned by resolver.
|
1298
1225
|
service_config = std::move(*result.service_config);
|
1299
|
-
config_selector =
|
1226
|
+
config_selector = result.args.GetObjectRef<ConfigSelector>();
|
1300
1227
|
}
|
1301
1228
|
// Note: The only case in which service_config is null here is if the resolver
|
1302
1229
|
// returned a service config error and we don't have a previous service
|
@@ -1320,9 +1247,9 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1320
1247
|
// If either has changed, apply the global parameters now.
|
1321
1248
|
if (service_config_changed || config_selector_changed) {
|
1322
1249
|
// Update service config in control plane.
|
1323
|
-
UpdateServiceConfigInControlPlaneLocked(
|
1324
|
-
|
1325
|
-
|
1250
|
+
UpdateServiceConfigInControlPlaneLocked(
|
1251
|
+
std::move(service_config), std::move(config_selector),
|
1252
|
+
std::string(lb_policy_config->name()));
|
1326
1253
|
} else if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1327
1254
|
gpr_log(GPR_INFO, "chand=%p: service config not changed", this);
|
1328
1255
|
}
|
@@ -1395,22 +1322,18 @@ void ClientChannel::CreateOrUpdateLbPolicyLocked(
|
|
1395
1322
|
update_args.addresses = std::move(result.addresses);
|
1396
1323
|
update_args.config = std::move(lb_policy_config);
|
1397
1324
|
update_args.resolution_note = std::move(result.resolution_note);
|
1398
|
-
// Add health check service name to channel args.
|
1399
|
-
absl::InlinedVector<grpc_arg, 1> args_to_add;
|
1400
|
-
if (health_check_service_name.has_value()) {
|
1401
|
-
args_to_add.push_back(grpc_channel_arg_string_create(
|
1402
|
-
const_cast<char*>(GRPC_ARG_HEALTH_CHECK_SERVICE_NAME),
|
1403
|
-
const_cast<char*>(health_check_service_name->c_str())));
|
1404
|
-
}
|
1405
1325
|
// Remove the config selector from channel args so that we're not holding
|
1406
1326
|
// unnecessary refs that cause it to be destroyed somewhere other than in the
|
1407
1327
|
// WorkSerializer.
|
1408
|
-
|
1409
|
-
|
1410
|
-
|
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
|
+
}
|
1411
1334
|
// Create policy if needed.
|
1412
1335
|
if (lb_policy_ == nullptr) {
|
1413
|
-
lb_policy_ = CreateLbPolicyLocked(
|
1336
|
+
lb_policy_ = CreateLbPolicyLocked(update_args.args);
|
1414
1337
|
}
|
1415
1338
|
// Update the policy.
|
1416
1339
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
@@ -1422,12 +1345,12 @@ void ClientChannel::CreateOrUpdateLbPolicyLocked(
|
|
1422
1345
|
|
1423
1346
|
// Creates a new LB policy.
|
1424
1347
|
OrphanablePtr<LoadBalancingPolicy> ClientChannel::CreateLbPolicyLocked(
|
1425
|
-
const
|
1348
|
+
const ChannelArgs& args) {
|
1426
1349
|
LoadBalancingPolicy::Args lb_policy_args;
|
1427
1350
|
lb_policy_args.work_serializer = work_serializer_;
|
1428
1351
|
lb_policy_args.channel_control_helper =
|
1429
1352
|
absl::make_unique<ClientChannelControlHelper>(this);
|
1430
|
-
lb_policy_args.args =
|
1353
|
+
lb_policy_args.args = args;
|
1431
1354
|
OrphanablePtr<LoadBalancingPolicy> lb_policy =
|
1432
1355
|
MakeOrphanable<ChildPolicyHandler>(std::move(lb_policy_args),
|
1433
1356
|
&grpc_client_channel_trace);
|
@@ -1502,19 +1425,11 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1502
1425
|
config_selector =
|
1503
1426
|
MakeRefCounted<DefaultConfigSelector>(saved_service_config_);
|
1504
1427
|
}
|
1505
|
-
|
1506
|
-
|
1507
|
-
const_cast<char*>(GRPC_ARG_CLIENT_CHANNEL), this,
|
1508
|
-
&kClientChannelArgPointerVtable),
|
1509
|
-
grpc_channel_arg_pointer_create(
|
1510
|
-
const_cast<char*>(GRPC_ARG_SERVICE_CONFIG_OBJ), service_config.get(),
|
1511
|
-
&kServiceConfigObjArgPointerVtable),
|
1512
|
-
};
|
1513
|
-
grpc_channel_args* new_args = grpc_channel_args_copy_and_add(
|
1514
|
-
channel_args_, args_to_add.data(), args_to_add.size());
|
1515
|
-
new_args = config_selector->ModifyChannelArgs(new_args);
|
1428
|
+
ChannelArgs new_args = config_selector->ModifyChannelArgs(
|
1429
|
+
channel_args_.SetObject(this).SetObject(service_config));
|
1516
1430
|
bool enable_retries =
|
1517
|
-
|
1431
|
+
!new_args.WantMinimalStack() &&
|
1432
|
+
new_args.GetBool(GRPC_ARG_ENABLE_RETRIES).value_or(true);
|
1518
1433
|
// Construct dynamic filter stack.
|
1519
1434
|
std::vector<const grpc_channel_filter*> filters =
|
1520
1435
|
config_selector->GetFilters();
|
@@ -1524,9 +1439,8 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1524
1439
|
filters.push_back(&DynamicTerminationFilter::kFilterVtable);
|
1525
1440
|
}
|
1526
1441
|
RefCountedPtr<DynamicFilters> dynamic_filters =
|
1527
|
-
DynamicFilters::Create(new_args, std::move(filters));
|
1442
|
+
DynamicFilters::Create(new_args.ToC().get(), std::move(filters));
|
1528
1443
|
GPR_ASSERT(dynamic_filters != nullptr);
|
1529
|
-
grpc_channel_args_destroy(new_args);
|
1530
1444
|
// Grab data plane lock to update service config.
|
1531
1445
|
//
|
1532
1446
|
// We defer unreffing the old values (and deallocating memory) until
|
@@ -1712,6 +1626,10 @@ grpc_error_handle ClientChannel::DoPingLocked(grpc_transport_op* op) {
|
|
1712
1626
|
complete_pick->subchannel.get());
|
1713
1627
|
RefCountedPtr<ConnectedSubchannel> connected_subchannel =
|
1714
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
|
+
}
|
1715
1633
|
connected_subchannel->Ping(op->send_ping.on_initiate,
|
1716
1634
|
op->send_ping.on_ack);
|
1717
1635
|
return GRPC_ERROR_NONE;
|
@@ -1742,7 +1660,7 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
|
|
1742
1660
|
// Ping.
|
1743
1661
|
if (op->send_ping.on_initiate != nullptr || op->send_ping.on_ack != nullptr) {
|
1744
1662
|
grpc_error_handle error = DoPingLocked(op);
|
1745
|
-
if (error
|
1663
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
1746
1664
|
ExecCtx::Run(DEBUG_LOCATION, op->send_ping.on_initiate,
|
1747
1665
|
GRPC_ERROR_REF(error));
|
1748
1666
|
ExecCtx::Run(DEBUG_LOCATION, op->send_ping.on_ack, error);
|
@@ -1758,7 +1676,7 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
|
|
1758
1676
|
}
|
1759
1677
|
}
|
1760
1678
|
// Disconnect or enter IDLE.
|
1761
|
-
if (op->disconnect_with_error
|
1679
|
+
if (!GRPC_ERROR_IS_NONE(op->disconnect_with_error)) {
|
1762
1680
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1763
1681
|
gpr_log(GPR_INFO, "chand=%p: disconnect_with_error: %s", this,
|
1764
1682
|
grpc_error_std_string(op->disconnect_with_error).c_str());
|
@@ -1768,7 +1686,7 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
|
|
1768
1686
|
if (grpc_error_get_int(op->disconnect_with_error,
|
1769
1687
|
GRPC_ERROR_INT_CHANNEL_CONNECTIVITY_STATE, &value) &&
|
1770
1688
|
static_cast<grpc_connectivity_state>(value) == GRPC_CHANNEL_IDLE) {
|
1771
|
-
if (disconnect_error_
|
1689
|
+
if (GRPC_ERROR_IS_NONE(disconnect_error_)) {
|
1772
1690
|
// Enter IDLE state.
|
1773
1691
|
UpdateStateAndPickerLocked(GRPC_CHANNEL_IDLE, absl::Status(),
|
1774
1692
|
"channel entering IDLE", nullptr);
|
@@ -1776,7 +1694,7 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
|
|
1776
1694
|
GRPC_ERROR_UNREF(op->disconnect_with_error);
|
1777
1695
|
} else {
|
1778
1696
|
// Disconnect.
|
1779
|
-
GPR_ASSERT(disconnect_error_
|
1697
|
+
GPR_ASSERT(GRPC_ERROR_IS_NONE(disconnect_error_));
|
1780
1698
|
disconnect_error_ = op->disconnect_with_error;
|
1781
1699
|
UpdateStateAndPickerLocked(
|
1782
1700
|
GRPC_CHANNEL_SHUTDOWN, absl::Status(), "shutdown from API",
|
@@ -1971,7 +1889,7 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
|
|
1971
1889
|
// We do not yet have a dynamic call.
|
1972
1890
|
//
|
1973
1891
|
// If we've previously been cancelled, immediately fail any new batches.
|
1974
|
-
if (GPR_UNLIKELY(calld->cancel_error_
|
1892
|
+
if (GPR_UNLIKELY(!GRPC_ERROR_IS_NONE(calld->cancel_error_))) {
|
1975
1893
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
1976
1894
|
gpr_log(GPR_INFO, "chand=%p calld=%p: failing batch with error: %s",
|
1977
1895
|
chand, calld,
|
@@ -2083,7 +2001,7 @@ void ClientChannel::CallData::FailPendingBatchInCallCombiner(
|
|
2083
2001
|
void ClientChannel::CallData::PendingBatchesFail(
|
2084
2002
|
grpc_call_element* elem, grpc_error_handle error,
|
2085
2003
|
YieldCallCombinerPredicate yield_call_combiner_predicate) {
|
2086
|
-
GPR_ASSERT(error
|
2004
|
+
GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
|
2087
2005
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2088
2006
|
size_t num_batches = 0;
|
2089
2007
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
@@ -2187,7 +2105,8 @@ class ClientChannel::CallData::ResolverQueuedCallCanceller {
|
|
2187
2105
|
chand, calld, grpc_error_std_string(error).c_str(), self,
|
2188
2106
|
calld->resolver_call_canceller_);
|
2189
2107
|
}
|
2190
|
-
if (calld->resolver_call_canceller_ == self &&
|
2108
|
+
if (calld->resolver_call_canceller_ == self &&
|
2109
|
+
!GRPC_ERROR_IS_NONE(error)) {
|
2191
2110
|
// Remove pick from list of queued picks.
|
2192
2111
|
calld->MaybeRemoveCallFromResolverQueuedCallsLocked(self->elem_);
|
2193
2112
|
// Fail pending batches on the call.
|
@@ -2245,7 +2164,9 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
|
|
2245
2164
|
// Use the ConfigSelector to determine the config for the call.
|
2246
2165
|
ConfigSelector::CallConfig call_config =
|
2247
2166
|
config_selector->GetCallConfig({&path_, initial_metadata, arena_});
|
2248
|
-
if (call_config.
|
2167
|
+
if (!call_config.status.ok()) {
|
2168
|
+
return absl_status_to_grpc_error(call_config.status);
|
2169
|
+
}
|
2249
2170
|
// Create a ClientChannelServiceConfigCallData for the call. This stores
|
2250
2171
|
// a ref to the ServiceConfig and caches the right set of parsed configs
|
2251
2172
|
// to use for the call. The ClientChannelServiceConfigCallData will store
|
@@ -2275,17 +2196,13 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
|
|
2275
2196
|
}
|
2276
2197
|
// If the service config set wait_for_ready and the application
|
2277
2198
|
// did not explicitly set it, use the value from the service config.
|
2278
|
-
|
2279
|
-
|
2280
|
-
|
2199
|
+
auto* wait_for_ready =
|
2200
|
+
pending_batches_[0]
|
2201
|
+
->payload->send_initial_metadata.send_initial_metadata
|
2202
|
+
->GetOrCreatePointer(WaitForReady());
|
2281
2203
|
if (method_params->wait_for_ready().has_value() &&
|
2282
|
-
!
|
2283
|
-
|
2284
|
-
if (method_params->wait_for_ready().value()) {
|
2285
|
-
*send_initial_metadata_flags |= GRPC_INITIAL_METADATA_WAIT_FOR_READY;
|
2286
|
-
} else {
|
2287
|
-
*send_initial_metadata_flags &= ~GRPC_INITIAL_METADATA_WAIT_FOR_READY;
|
2288
|
-
}
|
2204
|
+
!wait_for_ready->explicitly_set) {
|
2205
|
+
wait_for_ready->value = method_params->wait_for_ready().value();
|
2289
2206
|
}
|
2290
2207
|
}
|
2291
2208
|
// Set the dynamic filter stack.
|
@@ -2330,7 +2247,7 @@ void ClientChannel::CallData::ResolutionDone(void* arg,
|
|
2330
2247
|
grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
|
2331
2248
|
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2332
2249
|
CallData* calld = static_cast<CallData*>(elem->call_data);
|
2333
|
-
if (error
|
2250
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
2334
2251
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2335
2252
|
gpr_log(GPR_INFO,
|
2336
2253
|
"chand=%p calld=%p: error applying config to call: error=%s",
|
@@ -2393,16 +2310,14 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
|
|
2393
2310
|
pending_batches_[0]->payload->send_initial_metadata;
|
2394
2311
|
grpc_metadata_batch* initial_metadata_batch =
|
2395
2312
|
send_initial_metadata.send_initial_metadata;
|
2396
|
-
const uint32_t send_initial_metadata_flags =
|
2397
|
-
send_initial_metadata.send_initial_metadata_flags;
|
2398
2313
|
// If we don't yet have a resolver result, we need to queue the call
|
2399
2314
|
// until we get one.
|
2400
2315
|
if (GPR_UNLIKELY(!chand->received_service_config_data_)) {
|
2401
2316
|
// If the resolver returned transient failure before returning the
|
2402
2317
|
// first service config, fail any non-wait_for_ready calls.
|
2403
2318
|
absl::Status resolver_error = chand->resolver_transient_failure_error_;
|
2404
|
-
if (!resolver_error.ok() &&
|
2405
|
-
|
2319
|
+
if (!resolver_error.ok() &&
|
2320
|
+
!initial_metadata_batch->GetOrCreatePointer(WaitForReady())->value) {
|
2406
2321
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2407
2322
|
gpr_log(GPR_INFO, "chand=%p calld=%p: resolution failed, failing call",
|
2408
2323
|
chand, this);
|
@@ -2449,7 +2364,7 @@ void ClientChannel::CallData::CreateDynamicCall(grpc_call_element* elem) {
|
|
2449
2364
|
chand, this, channel_stack);
|
2450
2365
|
}
|
2451
2366
|
dynamic_call_ = channel_stack->CreateCall(std::move(args), &error);
|
2452
|
-
if (error
|
2367
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
2453
2368
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2454
2369
|
gpr_log(GPR_INFO,
|
2455
2370
|
"chand=%p calld=%p: failed to create dynamic call: error=%s",
|
@@ -2540,25 +2455,16 @@ class ClientChannel::LoadBalancedCall::Metadata
|
|
2540
2455
|
// ClientChannel::LoadBalancedCall::LbCallState
|
2541
2456
|
//
|
2542
2457
|
|
2543
|
-
|
2544
|
-
|
2545
|
-
|
2546
|
-
|
2547
|
-
|
2548
|
-
|
2549
|
-
|
2550
|
-
|
2551
|
-
|
2552
|
-
|
2553
|
-
auto& call_attributes = service_config_call_data->call_attributes();
|
2554
|
-
auto it = call_attributes.find(key);
|
2555
|
-
if (it == call_attributes.end()) return absl::string_view();
|
2556
|
-
return it->second;
|
2557
|
-
}
|
2558
|
-
|
2559
|
-
private:
|
2560
|
-
LoadBalancedCall* lb_call_;
|
2561
|
-
};
|
2458
|
+
absl::string_view
|
2459
|
+
ClientChannel::LoadBalancedCall::LbCallState::GetCallAttribute(
|
2460
|
+
UniqueTypeName type) {
|
2461
|
+
auto* service_config_call_data = static_cast<ServiceConfigCallData*>(
|
2462
|
+
lb_call_->call_context_[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value);
|
2463
|
+
auto& call_attributes = service_config_call_data->call_attributes();
|
2464
|
+
auto it = call_attributes.find(type);
|
2465
|
+
if (it == call_attributes.end()) return absl::string_view();
|
2466
|
+
return it->second;
|
2467
|
+
}
|
2562
2468
|
|
2563
2469
|
//
|
2564
2470
|
// ClientChannel::LoadBalancedCall::BackendMetricAccessor
|
@@ -2718,7 +2624,7 @@ void ClientChannel::LoadBalancedCall::FailPendingBatchInCallCombiner(
|
|
2718
2624
|
void ClientChannel::LoadBalancedCall::PendingBatchesFail(
|
2719
2625
|
grpc_error_handle error,
|
2720
2626
|
YieldCallCombinerPredicate yield_call_combiner_predicate) {
|
2721
|
-
GPR_ASSERT(error
|
2627
|
+
GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
|
2722
2628
|
GRPC_ERROR_UNREF(failure_error_);
|
2723
2629
|
failure_error_ = error;
|
2724
2630
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
@@ -2809,8 +2715,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2809
2715
|
}
|
2810
2716
|
if (batch->send_initial_metadata) {
|
2811
2717
|
call_attempt_tracer_->RecordSendInitialMetadata(
|
2812
|
-
batch->payload->send_initial_metadata.send_initial_metadata
|
2813
|
-
batch->payload->send_initial_metadata.send_initial_metadata_flags);
|
2718
|
+
batch->payload->send_initial_metadata.send_initial_metadata);
|
2814
2719
|
peer_string_ = batch->payload->send_initial_metadata.peer_string;
|
2815
2720
|
original_send_initial_metadata_on_complete_ = batch->on_complete;
|
2816
2721
|
GRPC_CLOSURE_INIT(&send_initial_metadata_on_complete_,
|
@@ -2874,7 +2779,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2874
2779
|
// We do not yet have a subchannel call.
|
2875
2780
|
//
|
2876
2781
|
// If we've previously been cancelled, immediately fail any new batches.
|
2877
|
-
if (GPR_UNLIKELY(cancel_error_
|
2782
|
+
if (GPR_UNLIKELY(!GRPC_ERROR_IS_NONE(cancel_error_))) {
|
2878
2783
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2879
2784
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: failing batch with error: %s",
|
2880
2785
|
chand_, this, grpc_error_std_string(cancel_error_).c_str());
|
@@ -2951,7 +2856,7 @@ void ClientChannel::LoadBalancedCall::RecvInitialMetadataReady(
|
|
2951
2856
|
"chand=%p lb_call=%p: got recv_initial_metadata_ready: error=%s",
|
2952
2857
|
self->chand_, self, grpc_error_std_string(error).c_str());
|
2953
2858
|
}
|
2954
|
-
if (error
|
2859
|
+
if (GRPC_ERROR_IS_NONE(error)) {
|
2955
2860
|
// recv_initial_metadata_flags is not populated for clients
|
2956
2861
|
self->call_attempt_tracer_->RecordReceivedInitialMetadata(
|
2957
2862
|
self->recv_initial_metadata_, 0 /* recv_initial_metadata_flags */);
|
@@ -2967,7 +2872,7 @@ void ClientChannel::LoadBalancedCall::RecvMessageReady(
|
|
2967
2872
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: got recv_message_ready: error=%s",
|
2968
2873
|
self->chand_, self, grpc_error_std_string(error).c_str());
|
2969
2874
|
}
|
2970
|
-
if (
|
2875
|
+
if (self->recv_message_->has_value()) {
|
2971
2876
|
self->call_attempt_tracer_->RecordReceivedMessage(**self->recv_message_);
|
2972
2877
|
}
|
2973
2878
|
Closure::Run(DEBUG_LOCATION, self->original_recv_message_ready_,
|
@@ -2991,7 +2896,7 @@ void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
|
|
2991
2896
|
self->lb_subchannel_call_tracker_ != nullptr) {
|
2992
2897
|
// Get the call's status.
|
2993
2898
|
absl::Status status;
|
2994
|
-
if (error
|
2899
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
2995
2900
|
// Get status from error.
|
2996
2901
|
grpc_status_code code;
|
2997
2902
|
std::string message;
|
@@ -3014,7 +2919,7 @@ void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
|
|
3014
2919
|
self->RecordCallCompletion(status);
|
3015
2920
|
}
|
3016
2921
|
// Chain to original callback.
|
3017
|
-
if (self->failure_error_
|
2922
|
+
if (!GRPC_ERROR_IS_NONE(self->failure_error_)) {
|
3018
2923
|
error = self->failure_error_;
|
3019
2924
|
self->failure_error_ = GRPC_ERROR_NONE;
|
3020
2925
|
} else {
|
@@ -3061,7 +2966,7 @@ void ClientChannel::LoadBalancedCall::CreateSubchannelCall() {
|
|
3061
2966
|
subchannel_call_->SetAfterCallStackDestroy(on_call_destruction_complete_);
|
3062
2967
|
on_call_destruction_complete_ = nullptr;
|
3063
2968
|
}
|
3064
|
-
if (GPR_UNLIKELY(error
|
2969
|
+
if (GPR_UNLIKELY(!GRPC_ERROR_IS_NONE(error))) {
|
3065
2970
|
PendingBatchesFail(error, YieldCallCombiner);
|
3066
2971
|
} else {
|
3067
2972
|
PendingBatchesResume();
|
@@ -3098,7 +3003,7 @@ class ClientChannel::LoadBalancedCall::LbQueuedCallCanceller {
|
|
3098
3003
|
chand, lb_call, grpc_error_std_string(error).c_str(), self,
|
3099
3004
|
lb_call->lb_call_canceller_);
|
3100
3005
|
}
|
3101
|
-
if (lb_call->lb_call_canceller_ == self && error
|
3006
|
+
if (lb_call->lb_call_canceller_ == self && !GRPC_ERROR_IS_NONE(error)) {
|
3102
3007
|
lb_call->call_dispatch_controller_->Commit();
|
3103
3008
|
// Remove pick from list of queued picks.
|
3104
3009
|
lb_call->MaybeRemoveCallFromLbQueuedCallsLocked();
|
@@ -3149,7 +3054,7 @@ void ClientChannel::LoadBalancedCall::AsyncPickDone(grpc_error_handle error) {
|
|
3149
3054
|
void ClientChannel::LoadBalancedCall::PickDone(void* arg,
|
3150
3055
|
grpc_error_handle error) {
|
3151
3056
|
auto* self = static_cast<LoadBalancedCall*>(arg);
|
3152
|
-
if (error
|
3057
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
3153
3058
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3154
3059
|
gpr_log(GPR_INFO,
|
3155
3060
|
"chand=%p lb_call=%p: failed to pick subchannel: error=%s",
|
@@ -3185,8 +3090,6 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3185
3090
|
pending_batches_[0]->payload->send_initial_metadata;
|
3186
3091
|
grpc_metadata_batch* initial_metadata_batch =
|
3187
3092
|
send_initial_metadata.send_initial_metadata;
|
3188
|
-
const uint32_t send_initial_metadata_flags =
|
3189
|
-
send_initial_metadata.send_initial_metadata_flags;
|
3190
3093
|
// Perform LB pick.
|
3191
3094
|
LoadBalancingPolicy::PickArgs pick_args;
|
3192
3095
|
pick_args.path = path_.as_string_view();
|
@@ -3244,7 +3147,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3244
3147
|
return false;
|
3245
3148
|
},
|
3246
3149
|
// FailPick
|
3247
|
-
[this,
|
3150
|
+
[this, initial_metadata_batch,
|
3248
3151
|
&error](LoadBalancingPolicy::PickResult::Fail* fail_pick)
|
3249
3152
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
|
3250
3153
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
@@ -3253,8 +3156,8 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3253
3156
|
}
|
3254
3157
|
// If wait_for_ready is false, then the error indicates the RPC
|
3255
3158
|
// attempt's final status.
|
3256
|
-
if ((
|
3257
|
-
|
3159
|
+
if (!initial_metadata_batch->GetOrCreatePointer(WaitForReady())
|
3160
|
+
->value) {
|
3258
3161
|
grpc_error_handle lb_error =
|
3259
3162
|
absl_status_to_grpc_error(fail_pick->status);
|
3260
3163
|
*error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|