grpc 1.41.1 → 1.44.0.pre2
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 +185 -102
- data/include/grpc/event_engine/event_engine.h +118 -54
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +68 -0
- data/include/grpc/event_engine/memory_allocator.h +226 -0
- data/include/grpc/event_engine/memory_request.h +57 -0
- data/include/grpc/grpc.h +4 -0
- data/include/grpc/grpc_security.h +304 -145
- data/include/grpc/grpc_security_constants.h +2 -14
- data/include/grpc/impl/codegen/compression_types.h +0 -2
- data/include/grpc/impl/codegen/grpc_types.h +6 -0
- data/include/grpc/impl/codegen/port_platform.h +14 -3
- data/src/core/ext/filters/client_channel/backend_metric.cc +21 -23
- data/src/core/ext/filters/client_channel/backend_metric.h +4 -3
- data/src/core/ext/filters/client_channel/backup_poller.cc +2 -1
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +71 -89
- data/src/core/ext/filters/client_channel/client_channel.cc +305 -335
- data/src/core/ext/filters/client_channel/client_channel.h +84 -36
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +1 -1
- data/src/core/ext/filters/client_channel/client_channel_factory.h +17 -19
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +8 -15
- data/src/core/ext/filters/client_channel/config_selector.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.h +5 -6
- data/src/core/ext/filters/client_channel/connector.h +18 -18
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +5 -5
- data/src/core/ext/filters/client_channel/dynamic_filters.h +1 -1
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +0 -1
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +25 -22
- data/src/core/ext/filters/client_channel/health/health_check_client.h +4 -4
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +13 -15
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +4 -3
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +6 -5
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +4 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +5 -18
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +198 -116
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +3 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +2 -4
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +66 -36
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +21 -12
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +124 -74
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2514 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +68 -62
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +16 -11
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +18 -6
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +51 -96
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +101 -46
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +11 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +101 -209
- data/src/core/ext/filters/client_channel/lb_policy.cc +15 -14
- data/src/core/ext/filters/client_channel/lb_policy.h +105 -63
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -0
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +139 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +220 -88
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +22 -12
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +19 -15
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +31 -50
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +124 -240
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +38 -25
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +90 -77
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +13 -11
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +2 -1
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +7 -16
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +423 -396
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +2 -2
- data/src/core/ext/filters/client_channel/retry_filter.cc +66 -131
- data/src/core/ext/filters/client_channel/retry_service_config.cc +1 -1
- data/src/core/ext/filters/client_channel/retry_service_config.h +1 -1
- data/src/core/ext/filters/client_channel/retry_throttle.cc +17 -48
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +49 -36
- data/src/core/ext/filters/client_channel/subchannel.cc +99 -161
- data/src/core/ext/filters/client_channel/subchannel.h +31 -52
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +22 -7
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +11 -2
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +27 -210
- data/src/core/ext/filters/client_idle/idle_filter_state.cc +96 -0
- data/src/core/ext/filters/client_idle/idle_filter_state.h +66 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +23 -26
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +42 -53
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +6 -9
- data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +70 -160
- data/src/core/ext/filters/http/client_authority_filter.cc +19 -36
- data/src/core/ext/filters/http/http_filters_plugin.cc +51 -71
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +46 -139
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +5 -25
- data/src/core/ext/filters/http/server/http_server_filter.cc +84 -183
- data/src/core/ext/filters/max_age/max_age_filter.cc +24 -26
- data/src/core/ext/filters/message_size/message_size_filter.cc +19 -16
- data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
- data/src/core/ext/filters/rbac/rbac_filter.cc +157 -0
- data/src/core/ext/filters/rbac/rbac_filter.h +74 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +605 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +70 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +67 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +71 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +270 -0
- data/src/core/ext/{transport/chttp2/transport/hpack_utils.h → filters/server_config_selector/server_config_selector_filter.h} +9 -7
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +4 -23
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +0 -2
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +26 -28
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +11 -14
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +33 -53
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +146 -113
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +2 -3
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +9 -13
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +6 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -1
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +129 -278
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -2
- data/src/core/ext/transport/chttp2/transport/context_list.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/context_list.h +2 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +26 -23
- data/src/core/ext/transport/chttp2/transport/flow_control.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +4 -5
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +384 -218
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +89 -143
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +2 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +201 -202
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +27 -9
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +106 -26
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +29 -44
- data/src/core/ext/transport/chttp2/transport/internal.h +10 -38
- data/src/core/ext/transport/chttp2/transport/parsing.cc +30 -179
- data/src/core/ext/transport/chttp2/transport/writing.cc +65 -127
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -4
- data/src/core/ext/transport/inproc/inproc_transport.cc +114 -161
- data/src/core/ext/transport/inproc/inproc_transport.h +1 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +197 -165
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +41 -0
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +18 -0
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +26 -2
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +107 -82
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +188 -160
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +35 -22
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +277 -208
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +141 -1
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +16 -5
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +36 -25
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +56 -39
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +16 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +171 -125
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +55 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +51 -36
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +15 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +25 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +114 -90
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +90 -71
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +17 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +17 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +121 -92
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +25 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +13 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +21 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +18 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +22 -11
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +17 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +41 -27
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +59 -44
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +58 -43
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +15 -4
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +73 -57
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +81 -64
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +25 -14
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +19 -7
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +63 -45
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +66 -47
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +99 -78
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +19 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +41 -28
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +508 -442
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +51 -19
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +26 -13
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +21 -9
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +13 -2
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +35 -20
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +44 -31
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +61 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +146 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +22 -11
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +210 -181
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +7 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +5 -3
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +64 -48
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +33 -20
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +81 -65
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +75 -58
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +25 -13
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +61 -46
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +26 -12
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +22 -10
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +17 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +16 -5
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +15 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +27 -14
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +25 -13
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +20 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +30 -17
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +38 -21
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +41 -26
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +7 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +17 -5
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +22 -9
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +15 -4
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +2 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.c +20 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +7 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +116 -93
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +2 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/eval.upb.c +102 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/eval.upb.h +306 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/explain.upb.c +56 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/explain.upb.h +135 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +122 -98
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +2 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/value.upb.c +115 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/value.upb.h +371 -0
- data/src/core/ext/upb-generated/google/api/http.upb.c +35 -22
- data/src/core/ext/upb-generated/google/api/http.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +14 -3
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +247 -210
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +14 -3
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +12 -1
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +37 -23
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +14 -3
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +37 -18
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +2 -0
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +17 -6
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +2 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +26 -14
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +2 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +105 -83
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +2 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +20 -8
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +2 -0
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +16 -4
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +2 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +65 -47
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +34 -36
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +68 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +156 -0
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +67 -7
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +27 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +27 -5
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +19 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +27 -3
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +26 -2
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +320 -251
- data/src/core/ext/upb-generated/validate/validate.upb.h +20 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +103 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +199 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +14 -3
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +25 -13
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +20 -8
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +19 -8
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +28 -16
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +19 -8
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +71 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +132 -0
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +44 -0
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +85 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +2 -49
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +2 -2
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +2 -35
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +2 -41
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +307 -336
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +2 -19
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +100 -138
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +2 -15
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +2 -33
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +61 -77
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +61 -79
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +2 -13
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +80 -99
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +2 -15
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +2 -17
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +2 -19
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +2 -21
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +2 -23
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +188 -0
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +325 -427
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +2 -15
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +2 -43
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +2 -2
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +2 -17
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +2 -17
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +2 -19
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +2 -15
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +2 -13
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +2 -19
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +2 -15
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +2 -2
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +2 -2
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +154 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +95 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/eval.upbdefs.c +58 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/eval.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/explain.upbdefs.c +44 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/explain.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +153 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +100 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/value.upbdefs.c +75 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/value.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +2 -59
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +2 -13
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +2 -23
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +7 -15
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +21 -30
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +6 -5
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +7 -10
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +7 -11
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +2 -51
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +64 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +15 -19
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +27 -33
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +18 -24
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +19 -23
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +35 -41
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +21 -25
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +35 -0
- data/src/core/ext/xds/certificate_provider_registry.cc +1 -1
- data/src/core/ext/xds/certificate_provider_store.h +1 -1
- data/src/core/ext/xds/upb_utils.h +65 -0
- data/src/core/ext/xds/xds_api.cc +159 -3468
- data/src/core/ext/xds/xds_api.h +57 -558
- data/src/core/ext/xds/xds_bootstrap.cc +189 -122
- data/src/core/ext/xds/xds_bootstrap.h +30 -15
- data/src/core/ext/xds/xds_certificate_provider.cc +3 -3
- data/src/core/ext/xds/xds_certificate_provider.h +2 -2
- data/src/core/ext/xds/xds_channel_creds.cc +108 -0
- data/src/core/ext/xds/xds_channel_creds.h +50 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +112 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.h +52 -0
- data/src/core/ext/xds/xds_client.cc +751 -844
- data/src/core/ext/xds/xds_client.h +100 -143
- data/src/core/ext/xds/xds_client_stats.h +1 -1
- data/src/core/ext/xds/xds_cluster.cc +451 -0
- data/src/core/ext/xds/xds_cluster.h +111 -0
- data/src/core/ext/xds/xds_common_types.cc +388 -0
- data/src/core/ext/xds/xds_common_types.h +110 -0
- data/src/core/ext/xds/xds_endpoint.cc +364 -0
- data/src/core/ext/xds/xds_endpoint.h +135 -0
- data/src/core/ext/xds/xds_http_filters.cc +5 -0
- data/src/core/ext/xds/xds_http_rbac_filter.cc +563 -0
- data/src/core/ext/xds/xds_http_rbac_filter.h +54 -0
- data/src/core/ext/xds/xds_listener.cc +1036 -0
- data/src/core/ext/xds/xds_listener.h +220 -0
- data/src/core/ext/{filters/workarounds/workaround_cronet_compression_filter.h → xds/xds_resource_type.cc} +14 -8
- data/src/core/ext/xds/xds_resource_type.h +98 -0
- data/src/core/ext/xds/xds_resource_type_impl.h +87 -0
- data/src/core/ext/xds/xds_route_config.cc +993 -0
- data/src/core/ext/xds/xds_route_config.h +215 -0
- data/src/core/ext/xds/xds_routing.cc +250 -0
- data/src/core/ext/xds/xds_routing.h +101 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +1061 -289
- data/src/core/lib/address_utils/parse_address.cc +22 -0
- data/src/core/lib/address_utils/parse_address.h +5 -0
- data/src/core/lib/address_utils/sockaddr_utils.cc +33 -36
- data/src/core/lib/address_utils/sockaddr_utils.h +1 -16
- data/src/core/lib/avl/avl.h +389 -88
- data/src/core/lib/backoff/backoff.cc +6 -32
- data/src/core/lib/backoff/backoff.h +3 -3
- data/src/core/lib/channel/channel_args.cc +25 -8
- data/src/core/lib/channel/channel_args.h +11 -1
- data/src/core/lib/channel/channel_args_preconditioning.cc +47 -0
- data/src/core/lib/channel/channel_args_preconditioning.h +62 -0
- data/src/core/lib/channel/channel_stack.cc +8 -0
- data/src/core/lib/channel/channel_stack.h +1 -1
- data/src/core/lib/channel/channel_stack_builder.cc +8 -14
- data/src/core/lib/channel/channel_stack_builder.h +4 -7
- data/src/core/lib/channel/channel_trace.cc +7 -7
- data/src/core/lib/channel/channel_trace.h +1 -1
- data/src/core/lib/channel/channelz.cc +4 -3
- data/src/core/lib/channel/channelz.h +2 -2
- data/src/core/lib/channel/channelz_registry.cc +1 -1
- data/src/core/lib/channel/channelz_registry.h +1 -1
- data/src/core/lib/channel/connected_channel.cc +1 -3
- data/src/core/lib/channel/connected_channel.h +1 -2
- data/src/core/lib/compression/compression.cc +21 -113
- data/src/core/lib/compression/compression_internal.cc +142 -202
- data/src/core/lib/compression/compression_internal.h +64 -69
- data/src/core/lib/compression/message_compress.cc +11 -11
- data/src/core/lib/compression/message_compress.h +2 -2
- data/src/core/lib/config/core_configuration.cc +46 -2
- data/src/core/lib/config/core_configuration.h +50 -1
- data/src/core/lib/debug/stats.cc +1 -1
- data/src/core/lib/debug/stats_data.cc +13 -13
- data/src/core/lib/debug/trace.h +2 -2
- data/src/core/lib/event_engine/{endpoint_config.cc → channel_args_endpoint_config.cc} +2 -1
- data/src/core/lib/event_engine/{endpoint_config_internal.h → channel_args_endpoint_config.h} +3 -3
- data/src/core/lib/event_engine/event_engine.cc +0 -13
- data/src/core/lib/event_engine/event_engine_factory.cc +49 -0
- data/src/core/lib/event_engine/event_engine_factory.h +33 -0
- data/src/core/lib/event_engine/memory_allocator.cc +70 -0
- data/src/core/lib/gpr/atm.cc +1 -1
- data/src/core/lib/gpr/cpu_posix.cc +1 -1
- data/src/core/lib/gpr/string.cc +2 -2
- data/src/core/lib/gpr/tls.h +7 -1
- data/src/core/lib/gpr/useful.h +83 -32
- data/src/core/lib/gprpp/bitset.h +45 -16
- data/src/core/lib/gprpp/chunked_vector.h +253 -0
- data/src/core/lib/gprpp/construct_destruct.h +1 -1
- data/src/core/lib/gprpp/cpp_impl_of.h +45 -0
- data/src/core/lib/gprpp/global_config_env.cc +7 -7
- data/src/core/lib/gprpp/global_config_env.h +2 -2
- data/src/core/lib/gprpp/manual_constructor.h +2 -3
- data/src/core/lib/gprpp/memory.h +6 -0
- data/src/core/lib/gprpp/orphanable.h +1 -1
- data/src/core/lib/gprpp/ref_counted.h +1 -1
- data/src/core/lib/gprpp/ref_counted_ptr.h +2 -4
- data/src/core/lib/gprpp/status_helper.cc +35 -23
- data/src/core/lib/gprpp/status_helper.h +14 -16
- data/src/core/lib/gprpp/table.h +434 -0
- data/src/core/lib/http/httpcli.cc +215 -202
- data/src/core/lib/http/httpcli.h +17 -27
- data/src/core/lib/http/parser.cc +2 -2
- data/src/core/lib/iomgr/buffer_list.cc +9 -9
- data/src/core/lib/iomgr/buffer_list.h +13 -13
- data/src/core/lib/iomgr/call_combiner.cc +44 -16
- data/src/core/lib/iomgr/closure.h +29 -9
- data/src/core/lib/iomgr/combiner.cc +31 -24
- data/src/core/lib/iomgr/endpoint.h +0 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +14 -30
- data/src/core/lib/iomgr/endpoint_cfstream.h +4 -4
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +9 -11
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -14
- data/src/core/lib/iomgr/error.cc +115 -52
- data/src/core/lib/iomgr/error.h +53 -9
- data/src/core/lib/iomgr/error_cfstream.cc +5 -0
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +3 -2
- data/src/core/lib/iomgr/ev_epollex_linux.cc +7 -7
- data/src/core/lib/iomgr/ev_poll_posix.cc +29 -20
- data/src/core/lib/iomgr/event_engine/closure.cc +41 -18
- data/src/core/lib/iomgr/event_engine/closure.h +10 -1
- data/src/core/lib/iomgr/event_engine/endpoint.cc +5 -6
- data/src/core/lib/iomgr/event_engine/iomgr.cc +9 -28
- data/src/core/lib/iomgr/event_engine/pollset.cc +5 -4
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +6 -0
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +2 -0
- data/src/core/lib/iomgr/event_engine/resolver.cc +68 -46
- data/src/core/lib/iomgr/event_engine/resolver.h +56 -0
- data/src/core/lib/iomgr/event_engine/tcp.cc +16 -13
- data/src/core/lib/iomgr/event_engine/timer.cc +10 -4
- data/src/core/lib/iomgr/exec_ctx.cc +23 -18
- data/src/core/lib/iomgr/exec_ctx.h +11 -11
- data/src/core/lib/iomgr/executor/mpmcqueue.cc +5 -7
- data/src/core/lib/iomgr/executor/mpmcqueue.h +3 -8
- data/src/core/lib/iomgr/executor.cc +26 -34
- data/src/core/lib/iomgr/executor.h +1 -1
- data/src/core/lib/iomgr/fork_posix.cc +3 -2
- data/src/core/lib/iomgr/iomgr.cc +3 -1
- data/src/core/lib/iomgr/iomgr_custom.cc +4 -1
- data/src/core/lib/iomgr/iomgr_internal.cc +4 -9
- data/src/core/lib/iomgr/iomgr_internal.h +3 -2
- data/src/core/lib/iomgr/iomgr_posix.cc +2 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -2
- data/src/core/lib/iomgr/iomgr_windows.cc +2 -2
- data/src/core/lib/iomgr/load_file.cc +2 -2
- data/src/core/lib/iomgr/lockfree_event.cc +18 -0
- data/src/core/lib/iomgr/pollset_custom.cc +1 -1
- data/src/core/lib/iomgr/pollset_custom.h +1 -1
- data/src/core/lib/iomgr/port.h +2 -2
- data/src/core/lib/iomgr/resolve_address.cc +5 -24
- data/src/core/lib/iomgr/resolve_address.h +47 -44
- data/src/core/lib/iomgr/resolve_address_custom.cc +131 -109
- data/src/core/lib/iomgr/resolve_address_custom.h +101 -19
- data/src/core/lib/iomgr/resolve_address_impl.h +59 -0
- data/src/core/lib/iomgr/resolve_address_posix.cc +87 -73
- data/src/core/lib/iomgr/resolve_address_posix.h +47 -0
- data/src/core/lib/iomgr/resolve_address_windows.cc +93 -74
- data/src/core/lib/iomgr/resolve_address_windows.h +47 -0
- data/src/core/lib/iomgr/resolved_address.h +39 -0
- data/src/core/lib/iomgr/socket_factory_posix.cc +2 -2
- data/src/core/lib/iomgr/socket_mutator.cc +2 -2
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -2
- data/src/core/lib/iomgr/tcp_client.cc +2 -4
- data/src/core/lib/iomgr/tcp_client.h +1 -3
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +6 -12
- data/src/core/lib/iomgr/tcp_client_custom.cc +5 -11
- data/src/core/lib/iomgr/tcp_client_posix.cc +16 -41
- data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_client_windows.cc +3 -13
- data/src/core/lib/iomgr/tcp_custom.cc +9 -36
- data/src/core/lib/iomgr/tcp_custom.h +0 -1
- data/src/core/lib/iomgr/tcp_posix.cc +32 -38
- data/src/core/lib/iomgr/tcp_posix.h +1 -3
- data/src/core/lib/iomgr/tcp_server.cc +4 -6
- data/src/core/lib/iomgr/tcp_server.h +6 -8
- data/src/core/lib/iomgr/tcp_server_custom.cc +7 -16
- data/src/core/lib/iomgr/tcp_server_posix.cc +20 -25
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +19 -18
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -0
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +1 -0
- data/src/core/lib/iomgr/tcp_server_windows.cc +9 -17
- data/src/core/lib/iomgr/tcp_windows.cc +4 -9
- data/src/core/lib/iomgr/tcp_windows.h +1 -2
- data/src/core/lib/iomgr/timer_generic.cc +13 -13
- data/src/core/lib/iomgr/timer_heap.cc +1 -1
- data/src/core/lib/iomgr/unix_sockets_posix.cc +22 -34
- data/src/core/lib/iomgr/unix_sockets_posix.h +4 -7
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +6 -15
- data/src/core/lib/iomgr/work_serializer.cc +115 -44
- data/src/core/lib/iomgr/work_serializer.h +16 -4
- data/src/core/lib/json/json_reader.cc +83 -35
- data/src/core/lib/json/json_util.cc +69 -1
- data/src/core/lib/json/json_util.h +57 -99
- data/src/core/lib/json/json_writer.cc +0 -3
- data/src/core/lib/matchers/matchers.cc +1 -1
- data/src/core/lib/promise/activity.cc +115 -0
- data/src/core/lib/promise/activity.h +528 -0
- data/src/core/lib/promise/context.h +86 -0
- data/src/core/lib/promise/detail/basic_seq.h +407 -0
- data/src/core/lib/promise/detail/promise_factory.h +189 -0
- data/src/core/lib/promise/detail/promise_like.h +85 -0
- data/src/core/lib/promise/detail/status.h +49 -0
- data/src/core/lib/promise/detail/switch.h +1455 -0
- data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +48 -0
- data/src/core/lib/promise/loop.h +108 -0
- data/src/core/lib/promise/map.h +88 -0
- data/src/core/lib/promise/poll.h +60 -0
- data/src/core/lib/promise/race.h +84 -0
- data/src/core/lib/promise/seq.h +71 -0
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.cc +17 -25
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.h +43 -44
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_factory.h +12 -5
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_registry.cc +15 -17
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_registry.h +5 -7
- data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.cc +1 -1
- data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.h +5 -5
- data/src/core/lib/resource_quota/api.cc +108 -0
- data/src/core/lib/resource_quota/api.h +40 -0
- data/src/core/lib/{gprpp → resource_quota}/arena.cc +16 -13
- data/src/core/lib/{gprpp → resource_quota}/arena.h +32 -11
- data/src/core/lib/resource_quota/memory_quota.cc +454 -0
- data/src/core/lib/resource_quota/memory_quota.h +421 -0
- data/src/core/lib/resource_quota/resource_quota.cc +33 -0
- data/src/core/lib/resource_quota/resource_quota.h +58 -0
- data/src/core/lib/{transport/authority_override.h → resource_quota/thread_quota.cc} +22 -16
- data/src/core/lib/resource_quota/thread_quota.h +57 -0
- data/src/core/lib/resource_quota/trace.cc +19 -0
- data/src/core/lib/resource_quota/trace.h +24 -0
- data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +1 -1
- data/src/core/lib/security/authorization/evaluate_args.cc +41 -30
- data/src/core/lib/security/authorization/evaluate_args.h +3 -1
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +60 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +62 -0
- data/src/core/lib/security/authorization/matchers.cc +227 -0
- data/src/core/lib/security/authorization/matchers.h +211 -0
- data/src/core/lib/security/authorization/rbac_policy.cc +442 -0
- data/src/core/lib/security/authorization/rbac_policy.h +170 -0
- data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +15 -1
- data/src/core/lib/security/context/security_context.cc +8 -4
- data/src/core/lib/security/context/security_context.h +1 -1
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +6 -6
- data/src/core/lib/security/credentials/composite/composite_credentials.h +4 -3
- data/src/core/lib/security/credentials/credentials.cc +4 -2
- data/src/core/lib/security/credentials/credentials.h +16 -21
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +8 -12
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +57 -24
- data/src/core/lib/security/credentials/external/external_account_credentials.h +3 -7
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +2 -4
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +5 -4
- data/src/core/lib/security/credentials/fake/fake_credentials.h +8 -7
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +4 -9
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +16 -19
- data/src/core/lib/security/credentials/iam/iam_credentials.h +6 -5
- data/src/core/lib/security/credentials/jwt/json_token.cc +4 -6
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +17 -29
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +8 -8
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +11 -24
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +53 -70
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +13 -15
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +8 -9
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +5 -4
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +1 -10
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +11 -12
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +7 -8
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +201 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +106 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +15 -88
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +26 -82
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +21 -10
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +28 -33
- data/src/core/lib/security/credentials/xds/xds_credentials.h +1 -1
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +3 -3
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +5 -6
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +7 -7
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -2
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +4 -1
- data/src/core/lib/security/security_connector/security_connector.cc +9 -8
- data/src/core/lib/security/security_connector/security_connector.h +6 -2
- data/src/core/lib/security/security_connector/ssl_utils.cc +25 -27
- data/src/core/lib/security/security_connector/ssl_utils.h +6 -15
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +347 -198
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +64 -43
- data/src/core/lib/security/transport/auth_filters.h +7 -0
- data/src/core/lib/security/transport/client_auth_filter.cc +53 -33
- data/src/core/lib/security/transport/security_handshaker.cc +75 -45
- data/src/core/lib/security/transport/server_auth_filter.cc +40 -37
- data/src/core/lib/security/transport/tsi_error.cc +3 -5
- data/src/core/{ext/filters/client_channel → lib/service_config}/service_config.cc +2 -2
- data/src/core/{ext/filters/client_channel → lib/service_config}/service_config.h +4 -4
- data/src/core/lib/service_config/service_config_call_data.h +72 -0
- data/src/core/{ext/filters/client_channel → lib/service_config}/service_config_parser.cc +3 -3
- data/src/core/{ext/filters/client_channel → lib/service_config}/service_config_parser.h +8 -6
- data/src/core/lib/slice/percent_encoding.cc +30 -86
- data/src/core/lib/slice/percent_encoding.h +5 -11
- data/src/core/lib/slice/slice.cc +10 -24
- data/src/core/lib/slice/slice.h +371 -0
- data/src/core/lib/{compression/stream_compression_gzip.h → slice/slice_api.cc} +18 -7
- data/src/core/lib/slice/slice_buffer.cc +9 -5
- data/src/core/lib/slice/slice_intern.cc +4 -107
- data/src/core/lib/slice/slice_internal.h +2 -246
- data/src/core/lib/slice/slice_refcount.cc +17 -0
- data/src/core/lib/slice/slice_refcount.h +116 -0
- data/src/core/lib/slice/slice_refcount_base.h +165 -0
- data/src/core/lib/slice/slice_split.cc +100 -0
- data/src/core/lib/slice/slice_split.h +40 -0
- data/src/core/lib/slice/slice_string_helpers.cc +0 -83
- data/src/core/lib/slice/slice_string_helpers.h +0 -11
- data/src/core/lib/surface/builtins.cc +49 -0
- data/src/core/lib/surface/builtins.h +26 -0
- data/src/core/lib/surface/call.cc +249 -482
- data/src/core/lib/surface/call.h +4 -10
- data/src/core/lib/surface/channel.cc +53 -93
- data/src/core/lib/surface/channel.h +6 -25
- data/src/core/lib/surface/channel_init.cc +23 -76
- data/src/core/lib/surface/channel_init.h +52 -44
- data/src/core/lib/surface/completion_queue.cc +8 -7
- data/src/core/lib/surface/init.cc +0 -42
- data/src/core/lib/surface/init_secure.cc +17 -14
- data/src/core/lib/surface/lame_client.cc +41 -28
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +46 -55
- data/src/core/lib/surface/server.h +27 -21
- data/src/core/lib/surface/validate_metadata.cc +7 -4
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +2 -2
- data/src/core/lib/transport/byte_stream.cc +4 -0
- data/src/core/lib/transport/error_utils.cc +42 -17
- data/src/core/lib/transport/error_utils.h +15 -1
- data/src/core/lib/transport/metadata_batch.h +1167 -176
- data/src/core/lib/transport/{authority_override.cc → parsed_metadata.cc} +14 -17
- data/src/core/lib/transport/parsed_metadata.h +385 -0
- data/src/core/lib/transport/pid_controller.cc +4 -4
- data/src/core/lib/transport/timeout_encoding.cc +200 -66
- data/src/core/lib/transport/timeout_encoding.h +40 -10
- data/src/core/lib/transport/transport.cc +8 -31
- data/src/core/lib/transport/transport.h +1 -2
- data/src/core/lib/transport/transport_op_string.cc +7 -20
- data/src/core/lib/uri/uri_parser.cc +233 -63
- data/src/core/lib/uri/uri_parser.h +38 -23
- data/src/core/plugin_registry/grpc_plugin_registry.cc +69 -45
- data/src/core/tsi/alts/crypt/aes_gcm.cc +3 -1
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -12
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +10 -11
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +3 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +12 -2
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +2 -2
- data/src/core/tsi/fake_transport_security.cc +15 -7
- data/src/core/tsi/local_transport_security.cc +43 -80
- data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -4
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +16 -50
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +6 -7
- data/src/core/tsi/ssl_transport_security.cc +93 -16
- data/src/core/tsi/ssl_transport_security.h +19 -6
- data/src/core/tsi/transport_security.cc +12 -0
- data/src/core/tsi/transport_security.h +16 -1
- data/src/core/tsi/transport_security_interface.h +26 -0
- data/src/ruby/ext/grpc/extconf.rb +21 -11
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +12 -10
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +18 -15
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -0
- data/src/ruby/spec/client_server_spec.rb +1 -1
- data/third_party/abseil-cpp/absl/algorithm/container.h +101 -91
- data/third_party/abseil-cpp/absl/base/attributes.h +64 -31
- data/third_party/abseil-cpp/absl/base/config.h +67 -37
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +1 -26
- data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +48 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +3 -1
- data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +2 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +69 -0
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +4 -4
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +15 -10
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +16 -0
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +4 -4
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/container/fixed_array.h +0 -5
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +105 -97
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +17 -15
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +18 -102
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +37 -78
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +388 -423
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +3 -2
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -8
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +251 -120
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +11 -1
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +12 -11
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +6 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +12 -5
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +110 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +234 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +25 -7
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +8 -2
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +21 -3
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +2 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +2 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +14 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +72 -0
- data/third_party/abseil-cpp/absl/functional/function_ref.h +4 -1
- data/third_party/abseil-cpp/absl/hash/hash.h +22 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +15 -16
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +88 -37
- data/third_party/abseil-cpp/absl/hash/internal/{wyhash.cc → low_level_hash.cc} +23 -11
- data/third_party/abseil-cpp/absl/hash/internal/{wyhash.h → low_level_hash.h} +14 -12
- data/third_party/abseil-cpp/absl/memory/memory.h +1 -1
- data/third_party/abseil-cpp/absl/meta/type_traits.h +32 -2
- data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -10
- data/third_party/abseil-cpp/absl/numeric/int128.h +146 -73
- data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +19 -25
- data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +73 -70
- data/third_party/abseil-cpp/absl/{base → profiling}/internal/exponential_biased.cc +4 -4
- data/third_party/abseil-cpp/absl/{base → profiling}/internal/exponential_biased.h +6 -6
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +230 -0
- data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +200 -0
- data/third_party/abseil-cpp/absl/random/beta_distribution.h +427 -0
- data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +98 -0
- data/third_party/abseil-cpp/absl/random/discrete_distribution.h +247 -0
- data/third_party/abseil-cpp/absl/random/distributions.h +452 -0
- data/third_party/abseil-cpp/absl/random/exponential_distribution.h +165 -0
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.cc +104 -0
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +275 -0
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +92 -0
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +268 -0
- data/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
- data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +245 -0
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +150 -0
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +308 -0
- data/third_party/abseil-cpp/absl/random/internal/platform.h +171 -0
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +253 -0
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +131 -0
- data/third_party/abseil-cpp/absl/random/internal/randen.cc +91 -0
- data/third_party/abseil-cpp/absl/random/internal/randen.h +102 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +221 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +239 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +526 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc +462 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_slow.cc +471 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
- data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +167 -0
- data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +267 -0
- data/third_party/abseil-cpp/absl/random/internal/seed_material.h +104 -0
- data/third_party/abseil-cpp/absl/random/internal/traits.h +101 -0
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
- data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +111 -0
- data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +257 -0
- data/third_party/abseil-cpp/absl/random/poisson_distribution.h +258 -0
- data/third_party/abseil-cpp/absl/random/random.h +189 -0
- data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +46 -0
- data/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
- data/third_party/abseil-cpp/absl/random/seed_sequences.cc +29 -0
- data/third_party/abseil-cpp/absl/random/seed_sequences.h +110 -0
- data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +275 -0
- data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +202 -0
- data/third_party/abseil-cpp/absl/random/zipf_distribution.h +271 -0
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +5 -5
- data/third_party/abseil-cpp/absl/status/status.cc +9 -17
- data/third_party/abseil-cpp/absl/status/status.h +19 -15
- data/third_party/abseil-cpp/absl/status/statusor.cc +34 -2
- data/third_party/abseil-cpp/absl/status/statusor.h +31 -21
- data/third_party/abseil-cpp/absl/strings/charconv.cc +3 -3
- data/third_party/abseil-cpp/absl/strings/charconv.h +3 -2
- data/third_party/abseil-cpp/absl/strings/cord.cc +453 -359
- data/third_party/abseil-cpp/absl/strings/cord.h +197 -70
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +6 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +140 -63
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +1128 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +939 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +185 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +265 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +68 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +211 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +129 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +50 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +7 -7
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +55 -181
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +42 -24
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +4 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +96 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +85 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +139 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +131 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +445 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +298 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +87 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_scope.h +71 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +121 -0
- data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +48 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +8 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +3 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +6 -6
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +36 -18
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +62 -73
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +24 -16
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +35 -35
- data/third_party/abseil-cpp/absl/strings/numbers.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/numbers.h +34 -0
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/str_format.h +1 -2
- data/third_party/abseil-cpp/absl/strings/string_view.cc +16 -21
- data/third_party/abseil-cpp/absl/strings/string_view.h +120 -39
- data/third_party/abseil-cpp/absl/strings/substitute.cc +2 -1
- data/third_party/abseil-cpp/absl/strings/substitute.h +99 -74
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +25 -15
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +5 -3
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -1
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +3 -3
- data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -3
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +93 -20
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +2 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +83 -21
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +49 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -3
- data/third_party/abseil-cpp/absl/time/time.h +67 -36
- data/third_party/abseil-cpp/absl/types/bad_optional_access.h +1 -1
- data/third_party/abseil-cpp/absl/types/bad_variant_access.h +2 -2
- data/third_party/abseil-cpp/absl/types/span.h +3 -3
- data/third_party/address_sorting/address_sorting_posix.c +1 -0
- data/third_party/boringssl-with-bazel/err_data.c +681 -677
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +19 -11
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +20 -21
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +41 -30
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +104 -114
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +59 -47
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +24 -28
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +48 -272
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +8 -6
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +13 -0
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +4 -6
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +21 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +12 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +10 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +3 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +4 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +35 -35
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +11 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +10 -37
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +18 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +29 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +59 -23
- data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +2 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +8 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +216 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +21 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +0 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +1019 -274
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +5 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +8 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +13 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +4 -12
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +27 -41
- data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +12 -27
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +8 -10
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +29 -55
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +12 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +6 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +7 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +24 -28
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +31 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +491 -58
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -564
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +4 -3
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +4 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +4 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +0 -1
- data/third_party/re2/re2/compile.cc +91 -109
- data/third_party/re2/re2/dfa.cc +27 -39
- data/third_party/re2/re2/filtered_re2.cc +18 -2
- data/third_party/re2/re2/filtered_re2.h +10 -5
- data/third_party/re2/re2/nfa.cc +1 -1
- data/third_party/re2/re2/parse.cc +42 -23
- data/third_party/re2/re2/perl_groups.cc +34 -34
- data/third_party/re2/re2/prefilter.cc +3 -2
- data/third_party/re2/re2/prog.cc +182 -4
- data/third_party/re2/re2/prog.h +28 -9
- data/third_party/re2/re2/re2.cc +87 -118
- data/third_party/re2/re2/re2.h +156 -141
- data/third_party/re2/re2/regexp.cc +12 -5
- data/third_party/re2/re2/regexp.h +8 -2
- data/third_party/re2/re2/set.cc +31 -9
- data/third_party/re2/re2/set.h +9 -4
- data/third_party/re2/re2/simplify.cc +11 -3
- data/third_party/re2/re2/tostring.cc +1 -1
- data/third_party/re2/re2/walker-inl.h +1 -1
- data/third_party/re2/util/mutex.h +2 -2
- data/third_party/re2/util/pcre.h +3 -3
- data/third_party/upb/upb/decode.c +309 -178
- data/third_party/upb/upb/decode_fast.c +1 -1
- data/third_party/upb/upb/decode_internal.h +1 -0
- data/third_party/upb/upb/def.c +330 -85
- data/third_party/upb/upb/def.h +45 -14
- data/third_party/upb/upb/def.hpp +17 -4
- data/third_party/upb/upb/encode.c +100 -40
- data/third_party/upb/upb/msg.c +22 -9
- data/third_party/upb/upb/msg_internal.h +90 -8
- data/third_party/upb/upb/reflection.c +98 -58
- data/third_party/upb/upb/reflection.h +6 -2
- data/third_party/upb/upb/text_encode.c +3 -3
- data/third_party/upb/upb/upb.c +8 -0
- data/third_party/xxhash/xxhash.h +607 -352
- metadata +259 -115
- data/include/grpc/event_engine/slice_allocator.h +0 -71
- data/src/core/ext/filters/client_channel/service_config_call_data.h +0 -126
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +0 -211
- data/src/core/ext/filters/workarounds/workaround_utils.cc +0 -53
- data/src/core/ext/filters/workarounds/workaround_utils.h +0 -39
- data/src/core/ext/transport/chttp2/client/authority.cc +0 -42
- data/src/core/ext/transport/chttp2/client/authority.h +0 -36
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.cc +0 -67
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.h +0 -74
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +0 -107
- data/src/core/ext/transport/chttp2/transport/hpack_utils.cc +0 -46
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +0 -66
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +0 -58
- data/src/core/ext/transport/chttp2/transport/popularity_count.h +0 -60
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +0 -58
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +0 -130
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c +0 -33
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +0 -83
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +0 -44
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +0 -35
- data/src/core/lib/avl/avl.cc +0 -306
- data/src/core/lib/compression/algorithm_metadata.h +0 -62
- data/src/core/lib/compression/compression_args.cc +0 -136
- data/src/core/lib/compression/compression_args.h +0 -56
- data/src/core/lib/compression/stream_compression.cc +0 -81
- data/src/core/lib/compression/stream_compression.h +0 -117
- data/src/core/lib/compression/stream_compression_gzip.cc +0 -231
- data/src/core/lib/compression/stream_compression_identity.cc +0 -91
- data/src/core/lib/compression/stream_compression_identity.h +0 -29
- data/src/core/lib/gprpp/match.h +0 -73
- data/src/core/lib/gprpp/overload.h +0 -59
- data/src/core/lib/iomgr/event_engine/iomgr.h +0 -42
- data/src/core/lib/iomgr/resource_quota.cc +0 -1104
- data/src/core/lib/iomgr/resource_quota.h +0 -226
- data/src/core/lib/iomgr/udp_server.cc +0 -747
- data/src/core/lib/iomgr/udp_server.h +0 -103
- data/src/core/lib/security/credentials/credentials_metadata.cc +0 -61
- data/src/core/lib/transport/metadata.cc +0 -693
- data/src/core/lib/transport/metadata.h +0 -448
- data/src/core/lib/transport/metadata_batch.cc +0 -430
- data/src/core/lib/transport/static_metadata.cc +0 -1249
- data/src/core/lib/transport/static_metadata.h +0 -604
- data/src/core/lib/transport/status_metadata.cc +0 -62
- data/src/core/lib/transport/status_metadata.h +0 -48
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +0 -93
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +0 -217
@@ -48,11 +48,8 @@
|
|
48
48
|
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
|
49
49
|
#include "src/core/ext/filters/client_channel/local_subchannel_pool.h"
|
50
50
|
#include "src/core/ext/filters/client_channel/proxy_mapper_registry.h"
|
51
|
-
#include "src/core/ext/filters/client_channel/resolver_registry.h"
|
52
51
|
#include "src/core/ext/filters/client_channel/resolver_result_parsing.h"
|
53
52
|
#include "src/core/ext/filters/client_channel/retry_filter.h"
|
54
|
-
#include "src/core/ext/filters/client_channel/service_config.h"
|
55
|
-
#include "src/core/ext/filters/client_channel/service_config_call_data.h"
|
56
53
|
#include "src/core/ext/filters/client_channel/subchannel.h"
|
57
54
|
#include "src/core/ext/filters/deadline/deadline_filter.h"
|
58
55
|
#include "src/core/lib/backoff/backoff.h"
|
@@ -65,20 +62,23 @@
|
|
65
62
|
#include "src/core/lib/iomgr/polling_entity.h"
|
66
63
|
#include "src/core/lib/iomgr/work_serializer.h"
|
67
64
|
#include "src/core/lib/profiling/timers.h"
|
65
|
+
#include "src/core/lib/resolver/resolver_registry.h"
|
66
|
+
#include "src/core/lib/service_config/service_config.h"
|
67
|
+
#include "src/core/lib/service_config/service_config_call_data.h"
|
68
68
|
#include "src/core/lib/slice/slice_internal.h"
|
69
69
|
#include "src/core/lib/slice/slice_string_helpers.h"
|
70
70
|
#include "src/core/lib/surface/channel.h"
|
71
71
|
#include "src/core/lib/transport/connectivity_state.h"
|
72
72
|
#include "src/core/lib/transport/error_utils.h"
|
73
|
-
#include "src/core/lib/transport/metadata.h"
|
74
73
|
#include "src/core/lib/transport/metadata_batch.h"
|
75
|
-
#include "src/core/lib/transport/static_metadata.h"
|
76
|
-
#include "src/core/lib/transport/status_metadata.h"
|
77
74
|
|
78
75
|
//
|
79
76
|
// Client channel filter
|
80
77
|
//
|
81
78
|
|
79
|
+
#define GRPC_ARG_HEALTH_CHECK_SERVICE_NAME \
|
80
|
+
"grpc.internal.health_check_service_name"
|
81
|
+
|
82
82
|
namespace grpc_core {
|
83
83
|
|
84
84
|
using internal::ClientChannelGlobalParsedConfig;
|
@@ -254,7 +254,7 @@ namespace {
|
|
254
254
|
// Channel arg pointer vtable for GRPC_ARG_CLIENT_CHANNEL.
|
255
255
|
void* ClientChannelArgCopy(void* p) { return p; }
|
256
256
|
void ClientChannelArgDestroy(void* /*p*/) {}
|
257
|
-
int ClientChannelArgCmp(void* p, void* q) { return
|
257
|
+
int ClientChannelArgCmp(void* p, void* q) { return QsortCompare(p, q); }
|
258
258
|
const grpc_arg_pointer_vtable kClientChannelArgPointerVtable = {
|
259
259
|
ClientChannelArgCopy, ClientChannelArgDestroy, ClientChannelArgCmp};
|
260
260
|
|
@@ -268,7 +268,7 @@ void ServiceConfigObjArgDestroy(void* p) {
|
|
268
268
|
auto* service_config = static_cast<ServiceConfig*>(p);
|
269
269
|
service_config->Unref();
|
270
270
|
}
|
271
|
-
int ServiceConfigObjArgCmp(void* p, void* q) { return
|
271
|
+
int ServiceConfigObjArgCmp(void* p, void* q) { return QsortCompare(p, q); }
|
272
272
|
const grpc_arg_pointer_vtable kServiceConfigObjArgPointerVtable = {
|
273
273
|
ServiceConfigObjArgCopy, ServiceConfigObjArgDestroy,
|
274
274
|
ServiceConfigObjArgCmp};
|
@@ -346,8 +346,9 @@ class DynamicTerminationFilter::CallData {
|
|
346
346
|
calld->call_context_, calld->path_,
|
347
347
|
/*start_time=*/0, calld->deadline_,
|
348
348
|
calld->arena_, calld->call_combiner_};
|
349
|
-
auto* service_config_call_data =
|
350
|
-
|
349
|
+
auto* service_config_call_data =
|
350
|
+
static_cast<ClientChannelServiceConfigCallData*>(
|
351
|
+
calld->call_context_[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value);
|
351
352
|
calld->lb_call_ = client_channel->CreateLoadBalancedCall(
|
352
353
|
args, pollent, nullptr,
|
353
354
|
service_config_call_data->call_dispatch_controller(),
|
@@ -413,16 +414,11 @@ class ClientChannel::ResolverResultHandler : public Resolver::ResultHandler {
|
|
413
414
|
GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_, "ResolverResultHandler");
|
414
415
|
}
|
415
416
|
|
416
|
-
void
|
417
|
+
void ReportResult(Resolver::Result result) override
|
417
418
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
418
419
|
chand_->OnResolverResultChangedLocked(std::move(result));
|
419
420
|
}
|
420
421
|
|
421
|
-
void ReturnError(grpc_error_handle error) override
|
422
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
423
|
-
chand_->OnResolverErrorLocked(error);
|
424
|
-
}
|
425
|
-
|
426
422
|
private:
|
427
423
|
ClientChannel* chand_;
|
428
424
|
};
|
@@ -456,15 +452,17 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
456
452
|
chand, this, subchannel_.get());
|
457
453
|
}
|
458
454
|
GRPC_CHANNEL_STACK_REF(chand_->owning_stack_, "SubchannelWrapper");
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
chand_->
|
464
|
-
|
465
|
-
|
455
|
+
if (chand_->channelz_node_ != nullptr) {
|
456
|
+
auto* subchannel_node = subchannel_->channelz_node();
|
457
|
+
if (subchannel_node != nullptr) {
|
458
|
+
auto it = chand_->subchannel_refcount_map_.find(subchannel_.get());
|
459
|
+
if (it == chand_->subchannel_refcount_map_.end()) {
|
460
|
+
chand_->channelz_node_->AddChildSubchannel(subchannel_node->uuid());
|
461
|
+
it = chand_->subchannel_refcount_map_.emplace(subchannel_.get(), 0)
|
462
|
+
.first;
|
463
|
+
}
|
464
|
+
++it->second;
|
466
465
|
}
|
467
|
-
++it->second;
|
468
466
|
}
|
469
467
|
chand_->subchannel_wrappers_.insert(this);
|
470
468
|
}
|
@@ -476,32 +474,30 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
476
474
|
chand_, this, subchannel_.get());
|
477
475
|
}
|
478
476
|
chand_->subchannel_wrappers_.erase(this);
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
477
|
+
if (chand_->channelz_node_ != nullptr) {
|
478
|
+
auto* subchannel_node = subchannel_->channelz_node();
|
479
|
+
if (subchannel_node != nullptr) {
|
480
|
+
auto it = chand_->subchannel_refcount_map_.find(subchannel_.get());
|
481
|
+
GPR_ASSERT(it != chand_->subchannel_refcount_map_.end());
|
482
|
+
--it->second;
|
483
|
+
if (it->second == 0) {
|
484
|
+
chand_->channelz_node_->RemoveChildSubchannel(
|
485
|
+
subchannel_node->uuid());
|
486
|
+
chand_->subchannel_refcount_map_.erase(it);
|
487
|
+
}
|
487
488
|
}
|
488
489
|
}
|
489
490
|
GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_, "SubchannelWrapper");
|
490
491
|
}
|
491
492
|
|
492
|
-
grpc_connectivity_state CheckConnectivityState() override
|
493
|
-
|
494
|
-
RefCountedPtr<ConnectedSubchannel> connected_subchannel;
|
495
|
-
grpc_connectivity_state connectivity_state =
|
496
|
-
subchannel_->CheckConnectivityState(health_check_service_name_,
|
497
|
-
&connected_subchannel);
|
498
|
-
MaybeUpdateConnectedSubchannel(std::move(connected_subchannel));
|
499
|
-
return connectivity_state;
|
493
|
+
grpc_connectivity_state CheckConnectivityState() override {
|
494
|
+
return subchannel_->CheckConnectivityState(health_check_service_name_);
|
500
495
|
}
|
501
496
|
|
502
497
|
void WatchConnectivityState(
|
503
498
|
grpc_connectivity_state initial_state,
|
504
|
-
std::unique_ptr<ConnectivityStateWatcherInterface> watcher) override
|
499
|
+
std::unique_ptr<ConnectivityStateWatcherInterface> watcher) override
|
500
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
505
501
|
auto& watcher_wrapper = watcher_map_[watcher.get()];
|
506
502
|
GPR_ASSERT(watcher_wrapper == nullptr);
|
507
503
|
watcher_wrapper = new WatcherWrapper(std::move(watcher),
|
@@ -513,8 +509,8 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
513
509
|
watcher_wrapper));
|
514
510
|
}
|
515
511
|
|
516
|
-
void CancelConnectivityStateWatch(
|
517
|
-
|
512
|
+
void CancelConnectivityStateWatch(ConnectivityStateWatcherInterface* watcher)
|
513
|
+
override ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
518
514
|
auto it = watcher_map_.find(watcher);
|
519
515
|
GPR_ASSERT(it != watcher_map_.end());
|
520
516
|
subchannel_->CancelConnectivityStateWatch(health_check_service_name_,
|
@@ -522,6 +518,10 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
522
518
|
watcher_map_.erase(it);
|
523
519
|
}
|
524
520
|
|
521
|
+
RefCountedPtr<ConnectedSubchannel> connected_subchannel() const {
|
522
|
+
return subchannel_->connected_subchannel();
|
523
|
+
}
|
524
|
+
|
525
525
|
void AttemptToConnect() override { subchannel_->AttemptToConnect(); }
|
526
526
|
|
527
527
|
void ResetBackoff() override { subchannel_->ResetBackoff(); }
|
@@ -534,57 +534,6 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
534
534
|
subchannel_->ThrottleKeepaliveTime(new_keepalive_time);
|
535
535
|
}
|
536
536
|
|
537
|
-
void UpdateHealthCheckServiceName(
|
538
|
-
absl::optional<std::string> health_check_service_name) {
|
539
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
|
540
|
-
gpr_log(GPR_INFO,
|
541
|
-
"chand=%p: subchannel wrapper %p: updating health check service "
|
542
|
-
"name from \"%s\" to \"%s\"",
|
543
|
-
chand_, this, health_check_service_name_->c_str(),
|
544
|
-
health_check_service_name->c_str());
|
545
|
-
}
|
546
|
-
for (auto& p : watcher_map_) {
|
547
|
-
WatcherWrapper*& watcher_wrapper = p.second;
|
548
|
-
// Cancel the current watcher and create a new one using the new
|
549
|
-
// health check service name.
|
550
|
-
// TODO(roth): If there is not already an existing health watch
|
551
|
-
// call for the new name, then the watcher will initially report
|
552
|
-
// state CONNECTING. If the LB policy is currently reporting
|
553
|
-
// state READY, this may cause it to switch to CONNECTING before
|
554
|
-
// switching back to READY. This could cause a small delay for
|
555
|
-
// RPCs being started on the channel. If/when this becomes a
|
556
|
-
// problem, we may be able to handle it by waiting for the new
|
557
|
-
// watcher to report READY before we use it to replace the old one.
|
558
|
-
WatcherWrapper* replacement = watcher_wrapper->MakeReplacement();
|
559
|
-
subchannel_->CancelConnectivityStateWatch(health_check_service_name_,
|
560
|
-
watcher_wrapper);
|
561
|
-
watcher_wrapper = replacement;
|
562
|
-
subchannel_->WatchConnectivityState(
|
563
|
-
replacement->last_seen_state(), health_check_service_name,
|
564
|
-
RefCountedPtr<Subchannel::ConnectivityStateWatcherInterface>(
|
565
|
-
replacement));
|
566
|
-
}
|
567
|
-
// Save the new health check service name.
|
568
|
-
health_check_service_name_ = std::move(health_check_service_name);
|
569
|
-
}
|
570
|
-
|
571
|
-
// Caller must be holding the control-plane work_serializer.
|
572
|
-
ConnectedSubchannel* connected_subchannel() const
|
573
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::work_serializer_) {
|
574
|
-
return connected_subchannel_.get();
|
575
|
-
}
|
576
|
-
|
577
|
-
// Caller must be holding the data-plane mutex.
|
578
|
-
ConnectedSubchannel* connected_subchannel_in_data_plane() const
|
579
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
|
580
|
-
return connected_subchannel_in_data_plane_.get();
|
581
|
-
}
|
582
|
-
void set_connected_subchannel_in_data_plane(
|
583
|
-
RefCountedPtr<ConnectedSubchannel> connected_subchannel)
|
584
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
|
585
|
-
connected_subchannel_in_data_plane_ = std::move(connected_subchannel);
|
586
|
-
}
|
587
|
-
|
588
537
|
private:
|
589
538
|
// Subchannel and SubchannelInterface have different interfaces for
|
590
539
|
// their respective ConnectivityStateWatcherInterface classes.
|
@@ -696,8 +645,6 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
696
645
|
// since this callback was scheduled.
|
697
646
|
if (watcher_ != nullptr) {
|
698
647
|
last_seen_state_ = state_change.state;
|
699
|
-
parent_->MaybeUpdateConnectedSubchannel(
|
700
|
-
std::move(state_change.connected_subchannel));
|
701
648
|
watcher_->OnConnectivityStateChange(state_change.state);
|
702
649
|
}
|
703
650
|
}
|
@@ -709,28 +656,6 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
709
656
|
WatcherWrapper* replacement_ = nullptr;
|
710
657
|
};
|
711
658
|
|
712
|
-
void MaybeUpdateConnectedSubchannel(
|
713
|
-
RefCountedPtr<ConnectedSubchannel> connected_subchannel)
|
714
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::work_serializer_) {
|
715
|
-
// Update the connected subchannel only if the channel is not shutting
|
716
|
-
// down. This is because once the channel is shutting down, we
|
717
|
-
// ignore picker updates from the LB policy, which means that
|
718
|
-
// UpdateStateAndPickerLocked() will never process the entries
|
719
|
-
// in chand_->pending_subchannel_updates_. So we don't want to add
|
720
|
-
// entries there that will never be processed, since that would
|
721
|
-
// leave dangling refs to the channel and prevent its destruction.
|
722
|
-
grpc_error_handle disconnect_error = chand_->disconnect_error();
|
723
|
-
if (disconnect_error != GRPC_ERROR_NONE) return;
|
724
|
-
// Not shutting down, so do the update.
|
725
|
-
if (connected_subchannel_ != connected_subchannel) {
|
726
|
-
connected_subchannel_ = std::move(connected_subchannel);
|
727
|
-
// Record the new connected subchannel so that it can be updated
|
728
|
-
// in the data plane mutex the next time the picker is updated.
|
729
|
-
chand_->pending_subchannel_updates_[Ref(
|
730
|
-
DEBUG_LOCATION, "ConnectedSubchannelUpdate")] = connected_subchannel_;
|
731
|
-
}
|
732
|
-
}
|
733
|
-
|
734
659
|
ClientChannel* chand_;
|
735
660
|
RefCountedPtr<Subchannel> subchannel_;
|
736
661
|
absl::optional<std::string> health_check_service_name_;
|
@@ -739,13 +664,8 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
739
664
|
// subchannel. This is needed so that when the LB policy calls
|
740
665
|
// CancelConnectivityStateWatch() with its watcher, we know the
|
741
666
|
// corresponding WrapperWatcher to cancel on the underlying subchannel.
|
742
|
-
std::map<ConnectivityStateWatcherInterface*, WatcherWrapper*> watcher_map_
|
743
|
-
// To be accessed only in the control plane work_serializer.
|
744
|
-
RefCountedPtr<ConnectedSubchannel> connected_subchannel_
|
667
|
+
std::map<ConnectivityStateWatcherInterface*, WatcherWrapper*> watcher_map_
|
745
668
|
ABSL_GUARDED_BY(&ClientChannel::work_serializer_);
|
746
|
-
// To be accessed only in the data plane mutex.
|
747
|
-
RefCountedPtr<ConnectedSubchannel> connected_subchannel_in_data_plane_
|
748
|
-
ABSL_GUARDED_BY(&ClientChannel::data_plane_mu_);
|
749
669
|
};
|
750
670
|
|
751
671
|
//
|
@@ -942,35 +862,62 @@ class ClientChannel::ClientChannelControlHelper
|
|
942
862
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
943
863
|
if (chand_->resolver_ == nullptr) return nullptr; // Shutting down.
|
944
864
|
// Determine health check service name.
|
945
|
-
bool inhibit_health_checking = grpc_channel_args_find_bool(
|
946
|
-
&args, GRPC_ARG_INHIBIT_HEALTH_CHECKING, false);
|
947
865
|
absl::optional<std::string> health_check_service_name;
|
948
|
-
|
949
|
-
|
866
|
+
const char* health_check_service_name_arg = grpc_channel_args_find_string(
|
867
|
+
&args, GRPC_ARG_HEALTH_CHECK_SERVICE_NAME);
|
868
|
+
if (health_check_service_name_arg != nullptr) {
|
869
|
+
bool inhibit_health_checking = grpc_channel_args_find_bool(
|
870
|
+
&args, GRPC_ARG_INHIBIT_HEALTH_CHECKING, false);
|
871
|
+
if (!inhibit_health_checking) {
|
872
|
+
health_check_service_name = health_check_service_name_arg;
|
873
|
+
}
|
950
874
|
}
|
875
|
+
// Construct channel args for subchannel.
|
951
876
|
// Remove channel args that should not affect subchannel uniqueness.
|
952
|
-
|
877
|
+
absl::InlinedVector<const char*, 4> args_to_remove = {
|
878
|
+
GRPC_ARG_HEALTH_CHECK_SERVICE_NAME,
|
953
879
|
GRPC_ARG_INHIBIT_HEALTH_CHECKING,
|
954
880
|
GRPC_ARG_CHANNELZ_CHANNEL_NODE,
|
955
881
|
};
|
956
882
|
// Add channel args needed for the subchannel.
|
957
|
-
absl::InlinedVector<grpc_arg,
|
958
|
-
Subchannel::CreateSubchannelAddressArg(&address.address()),
|
883
|
+
absl::InlinedVector<grpc_arg, 2> args_to_add = {
|
959
884
|
SubchannelPoolInterface::CreateChannelArg(
|
960
885
|
chand_->subchannel_pool_.get()),
|
961
886
|
};
|
887
|
+
// Check if default authority arg is already set.
|
888
|
+
const char* default_authority =
|
889
|
+
grpc_channel_args_find_string(&args, GRPC_ARG_DEFAULT_AUTHORITY);
|
890
|
+
// Add args from subchannel address.
|
962
891
|
if (address.args() != nullptr) {
|
963
892
|
for (size_t j = 0; j < address.args()->num_args; ++j) {
|
964
|
-
|
893
|
+
grpc_arg& arg = address.args()->args[j];
|
894
|
+
if (strcmp(arg.key, GRPC_ARG_DEFAULT_AUTHORITY) == 0) {
|
895
|
+
// Don't add default authority arg from subchannel address if
|
896
|
+
// it's already set at the channel level -- the value from the
|
897
|
+
// application should take precedence over what is set by the
|
898
|
+
// resolver.
|
899
|
+
if (default_authority != nullptr) continue;
|
900
|
+
default_authority = arg.value.string;
|
901
|
+
}
|
902
|
+
args_to_add.emplace_back(arg);
|
965
903
|
}
|
966
904
|
}
|
905
|
+
// If we haven't already set the default authority arg, add it from
|
906
|
+
// the channel.
|
907
|
+
if (default_authority == nullptr) {
|
908
|
+
// Remove it, just in case it's actually present but is the wrong type.
|
909
|
+
args_to_remove.push_back(GRPC_ARG_DEFAULT_AUTHORITY);
|
910
|
+
args_to_add.push_back(grpc_channel_arg_string_create(
|
911
|
+
const_cast<char*>(GRPC_ARG_DEFAULT_AUTHORITY),
|
912
|
+
const_cast<char*>(chand_->default_authority_.c_str())));
|
913
|
+
}
|
967
914
|
grpc_channel_args* new_args = grpc_channel_args_copy_and_add_and_remove(
|
968
|
-
&args, args_to_remove,
|
969
|
-
args_to_add.
|
970
|
-
gpr_free(args_to_add[0].value.string);
|
915
|
+
&args, args_to_remove.data(), args_to_remove.size(), args_to_add.data(),
|
916
|
+
args_to_add.size());
|
971
917
|
// Create subchannel.
|
972
918
|
RefCountedPtr<Subchannel> subchannel =
|
973
|
-
chand_->client_channel_factory_->CreateSubchannel(
|
919
|
+
chand_->client_channel_factory_->CreateSubchannel(address.address(),
|
920
|
+
new_args);
|
974
921
|
grpc_channel_args_destroy(new_args);
|
975
922
|
if (subchannel == nullptr) return nullptr;
|
976
923
|
// Make sure the subchannel has updated keepalive time.
|
@@ -985,9 +932,8 @@ class ClientChannel::ClientChannelControlHelper
|
|
985
932
|
std::unique_ptr<LoadBalancingPolicy::SubchannelPicker> picker) override
|
986
933
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
987
934
|
if (chand_->resolver_ == nullptr) return; // Shutting down.
|
988
|
-
grpc_error_handle disconnect_error = chand_->disconnect_error();
|
989
935
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
|
990
|
-
const char* extra =
|
936
|
+
const char* extra = chand_->disconnect_error_ == GRPC_ERROR_NONE
|
991
937
|
? ""
|
992
938
|
: " (ignoring -- channel shutting down)";
|
993
939
|
gpr_log(GPR_INFO, "chand=%p: update: state=%s status=(%s) picker=%p%s",
|
@@ -995,7 +941,7 @@ class ClientChannel::ClientChannelControlHelper
|
|
995
941
|
picker.get(), extra);
|
996
942
|
}
|
997
943
|
// Do update only if not shutting down.
|
998
|
-
if (
|
944
|
+
if (chand_->disconnect_error_ == GRPC_ERROR_NONE) {
|
999
945
|
chand_->UpdateStateAndPickerLocked(state, status, "helper",
|
1000
946
|
std::move(picker));
|
1001
947
|
}
|
@@ -1010,6 +956,10 @@ class ClientChannel::ClientChannelControlHelper
|
|
1010
956
|
chand_->resolver_->RequestReresolutionLocked();
|
1011
957
|
}
|
1012
958
|
|
959
|
+
absl::string_view GetAuthority() override {
|
960
|
+
return chand_->default_authority_;
|
961
|
+
}
|
962
|
+
|
1013
963
|
void AddTraceEvent(TraceSeverity severity, absl::string_view message) override
|
1014
964
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
1015
965
|
if (chand_->resolver_ == nullptr) return; // Shutting down.
|
@@ -1086,8 +1036,7 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
|
1086
1036
|
interested_parties_(grpc_pollset_set_create()),
|
1087
1037
|
work_serializer_(std::make_shared<WorkSerializer>()),
|
1088
1038
|
state_tracker_("client_channel", GRPC_CHANNEL_IDLE),
|
1089
|
-
subchannel_pool_(GetSubchannelPool(args->channel_args))
|
1090
|
-
disconnect_error_(GRPC_ERROR_NONE) {
|
1039
|
+
subchannel_pool_(GetSubchannelPool(args->channel_args)) {
|
1091
1040
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
|
1092
1041
|
gpr_log(GPR_INFO, "chand=%p: creating client_channel for channel stack %p",
|
1093
1042
|
this, owning_stack_);
|
@@ -1100,15 +1049,6 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
|
1100
1049
|
"Missing client channel factory in args for client channel filter");
|
1101
1050
|
return;
|
1102
1051
|
}
|
1103
|
-
// Get server name to resolve, using proxy mapper if needed.
|
1104
|
-
const char* server_uri =
|
1105
|
-
grpc_channel_args_find_string(args->channel_args, GRPC_ARG_SERVER_URI);
|
1106
|
-
if (server_uri == nullptr) {
|
1107
|
-
*error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1108
|
-
"server URI channel arg missing or wrong type in client channel "
|
1109
|
-
"filter");
|
1110
|
-
return;
|
1111
|
-
}
|
1112
1052
|
// Get default service config. If none is specified via the client API,
|
1113
1053
|
// we use an empty config.
|
1114
1054
|
const char* service_config_json = grpc_channel_args_find_string(
|
@@ -1121,30 +1061,50 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
|
1121
1061
|
default_service_config_.reset();
|
1122
1062
|
return;
|
1123
1063
|
}
|
1124
|
-
|
1125
|
-
|
1126
|
-
|
1064
|
+
// Get URI to resolve, using proxy mapper if needed.
|
1065
|
+
const char* server_uri =
|
1066
|
+
grpc_channel_args_find_string(args->channel_args, GRPC_ARG_SERVER_URI);
|
1067
|
+
if (server_uri == nullptr) {
|
1068
|
+
*error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1069
|
+
"target URI channel arg missing or wrong type in client channel "
|
1070
|
+
"filter");
|
1071
|
+
return;
|
1127
1072
|
}
|
1073
|
+
uri_to_resolve_ = server_uri;
|
1128
1074
|
char* proxy_name = nullptr;
|
1129
1075
|
grpc_channel_args* new_args = nullptr;
|
1130
1076
|
ProxyMapperRegistry::MapName(server_uri, args->channel_args, &proxy_name,
|
1131
1077
|
&new_args);
|
1132
|
-
|
1133
|
-
|
1078
|
+
if (proxy_name != nullptr) {
|
1079
|
+
uri_to_resolve_ = proxy_name;
|
1080
|
+
gpr_free(proxy_name);
|
1081
|
+
}
|
1082
|
+
// Make sure the URI to resolve is valid, so that we know that
|
1083
|
+
// resolver creation will succeed later.
|
1084
|
+
if (!ResolverRegistry::IsValidTarget(uri_to_resolve_)) {
|
1085
|
+
*error = GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
1086
|
+
absl::StrCat("the target uri is not valid: ", uri_to_resolve_));
|
1087
|
+
return;
|
1088
|
+
}
|
1134
1089
|
// Strip out service config channel arg, so that it doesn't affect
|
1135
1090
|
// subchannel uniqueness when the args flow down to that layer.
|
1136
1091
|
const char* arg_to_remove = GRPC_ARG_SERVICE_CONFIG;
|
1137
1092
|
channel_args_ = grpc_channel_args_copy_and_remove(
|
1138
1093
|
new_args != nullptr ? new_args : args->channel_args, &arg_to_remove, 1);
|
1139
1094
|
grpc_channel_args_destroy(new_args);
|
1095
|
+
// Set initial keepalive time.
|
1140
1096
|
keepalive_time_ = grpc_channel_args_find_integer(
|
1141
1097
|
channel_args_, GRPC_ARG_KEEPALIVE_TIME_MS,
|
1142
1098
|
{-1 /* default value, unset */, 1, INT_MAX});
|
1143
|
-
|
1144
|
-
|
1145
|
-
|
1146
|
-
|
1099
|
+
// Set default authority.
|
1100
|
+
const char* default_authority =
|
1101
|
+
grpc_channel_args_find_string(channel_args_, GRPC_ARG_DEFAULT_AUTHORITY);
|
1102
|
+
if (default_authority == nullptr) {
|
1103
|
+
default_authority_ = ResolverRegistry::GetDefaultAuthority(server_uri);
|
1104
|
+
} else {
|
1105
|
+
default_authority_ = default_authority;
|
1147
1106
|
}
|
1107
|
+
// Success.
|
1148
1108
|
*error = GRPC_ERROR_NONE;
|
1149
1109
|
}
|
1150
1110
|
|
@@ -1154,11 +1114,10 @@ ClientChannel::~ClientChannel() {
|
|
1154
1114
|
}
|
1155
1115
|
DestroyResolverAndLbPolicyLocked();
|
1156
1116
|
grpc_channel_args_destroy(channel_args_);
|
1157
|
-
GRPC_ERROR_UNREF(resolver_transient_failure_error_);
|
1158
1117
|
// Stop backup polling.
|
1159
1118
|
grpc_client_channel_stop_backup_polling(interested_parties_);
|
1160
1119
|
grpc_pollset_set_destroy(interested_parties_);
|
1161
|
-
GRPC_ERROR_UNREF(disconnect_error_
|
1120
|
+
GRPC_ERROR_UNREF(disconnect_error_);
|
1162
1121
|
}
|
1163
1122
|
|
1164
1123
|
OrphanablePtr<ClientChannel::LoadBalancedCall>
|
@@ -1235,26 +1194,29 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1235
1194
|
//
|
1236
1195
|
// We track a list of strings to eventually be concatenated and traced.
|
1237
1196
|
absl::InlinedVector<const char*, 3> trace_strings;
|
1238
|
-
|
1197
|
+
const bool resolution_contains_addresses =
|
1198
|
+
result.addresses.ok() && !result.addresses->empty();
|
1199
|
+
if (!resolution_contains_addresses &&
|
1200
|
+
previous_resolution_contained_addresses_) {
|
1239
1201
|
trace_strings.push_back("Address list became empty");
|
1240
|
-
} else if (
|
1202
|
+
} else if (resolution_contains_addresses &&
|
1241
1203
|
!previous_resolution_contained_addresses_) {
|
1242
1204
|
trace_strings.push_back("Address list became non-empty");
|
1243
1205
|
}
|
1244
|
-
previous_resolution_contained_addresses_ =
|
1206
|
+
previous_resolution_contained_addresses_ = resolution_contains_addresses;
|
1245
1207
|
std::string service_config_error_string_storage;
|
1246
|
-
if (result.
|
1208
|
+
if (!result.service_config.ok()) {
|
1247
1209
|
service_config_error_string_storage =
|
1248
|
-
|
1210
|
+
result.service_config.status().ToString();
|
1249
1211
|
trace_strings.push_back(service_config_error_string_storage.c_str());
|
1250
1212
|
}
|
1251
1213
|
// Choose the service config.
|
1252
1214
|
RefCountedPtr<ServiceConfig> service_config;
|
1253
1215
|
RefCountedPtr<ConfigSelector> config_selector;
|
1254
|
-
if (result.
|
1216
|
+
if (!result.service_config.ok()) {
|
1255
1217
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
|
1256
1218
|
gpr_log(GPR_INFO, "chand=%p: resolver returned service config error: %s",
|
1257
|
-
this,
|
1219
|
+
this, result.service_config.status().ToString().c_str());
|
1258
1220
|
}
|
1259
1221
|
// If the service config was invalid, then fallback to the
|
1260
1222
|
// previously returned service config.
|
@@ -1268,13 +1230,13 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1268
1230
|
service_config = saved_service_config_;
|
1269
1231
|
config_selector = saved_config_selector_;
|
1270
1232
|
} else {
|
1271
|
-
// We received
|
1233
|
+
// We received a service config error and we don't have a
|
1272
1234
|
// previous service config to fall back to. Put the channel into
|
1273
1235
|
// TRANSIENT_FAILURE.
|
1274
|
-
OnResolverErrorLocked(
|
1236
|
+
OnResolverErrorLocked(result.service_config.status());
|
1275
1237
|
trace_strings.push_back("no valid service config");
|
1276
1238
|
}
|
1277
|
-
} else if (result.service_config == nullptr) {
|
1239
|
+
} else if (*result.service_config == nullptr) {
|
1278
1240
|
// Resolver did not return any service config.
|
1279
1241
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
|
1280
1242
|
gpr_log(GPR_INFO,
|
@@ -1285,9 +1247,12 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1285
1247
|
service_config = default_service_config_;
|
1286
1248
|
} else {
|
1287
1249
|
// Use ServiceConfig and ConfigSelector returned by resolver.
|
1288
|
-
service_config = result.service_config;
|
1250
|
+
service_config = std::move(*result.service_config);
|
1289
1251
|
config_selector = ConfigSelector::GetFromChannelArgs(*result.args);
|
1290
1252
|
}
|
1253
|
+
// Note: The only case in which service_config is null here is if the resolver
|
1254
|
+
// returned a service config error and we don't have a previous service
|
1255
|
+
// config to fall back to.
|
1291
1256
|
if (service_config != nullptr) {
|
1292
1257
|
// Extract global config for client channel.
|
1293
1258
|
const internal::ClientChannelGlobalParsedConfig* parsed_service_config =
|
@@ -1307,15 +1272,16 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1307
1272
|
// If either has changed, apply the global parameters now.
|
1308
1273
|
if (service_config_changed || config_selector_changed) {
|
1309
1274
|
// Update service config in control plane.
|
1310
|
-
UpdateServiceConfigInControlPlaneLocked(
|
1311
|
-
|
1312
|
-
|
1275
|
+
UpdateServiceConfigInControlPlaneLocked(std::move(service_config),
|
1276
|
+
std::move(config_selector),
|
1277
|
+
lb_policy_config->name());
|
1313
1278
|
} else if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
|
1314
1279
|
gpr_log(GPR_INFO, "chand=%p: service config not changed", this);
|
1315
1280
|
}
|
1316
1281
|
// Create or update LB policy, as needed.
|
1317
|
-
CreateOrUpdateLbPolicyLocked(
|
1318
|
-
|
1282
|
+
CreateOrUpdateLbPolicyLocked(
|
1283
|
+
std::move(lb_policy_config),
|
1284
|
+
parsed_service_config->health_check_service_name(), std::move(result));
|
1319
1285
|
if (service_config_changed || config_selector_changed) {
|
1320
1286
|
// Start using new service config for calls.
|
1321
1287
|
// This needs to happen after the LB policy has been updated, since
|
@@ -1338,28 +1304,21 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1338
1304
|
}
|
1339
1305
|
}
|
1340
1306
|
|
1341
|
-
void ClientChannel::OnResolverErrorLocked(
|
1342
|
-
if (resolver_ == nullptr)
|
1343
|
-
GRPC_ERROR_UNREF(error);
|
1344
|
-
return;
|
1345
|
-
}
|
1307
|
+
void ClientChannel::OnResolverErrorLocked(absl::Status status) {
|
1308
|
+
if (resolver_ == nullptr) return;
|
1346
1309
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
|
1347
1310
|
gpr_log(GPR_INFO, "chand=%p: resolver transient failure: %s", this,
|
1348
|
-
|
1311
|
+
status.ToString().c_str());
|
1349
1312
|
}
|
1350
1313
|
// If we already have an LB policy from a previous resolution
|
1351
1314
|
// result, then we continue to let it set the connectivity state.
|
1352
1315
|
// Otherwise, we go into TRANSIENT_FAILURE.
|
1353
1316
|
if (lb_policy_ == nullptr) {
|
1354
|
-
grpc_error_handle
|
1355
|
-
GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
1356
|
-
"Resolver transient failure", &error, 1);
|
1357
|
-
absl::Status status = grpc_error_to_absl_status(state_error);
|
1317
|
+
grpc_error_handle error = absl_status_to_grpc_error(status);
|
1358
1318
|
{
|
1359
1319
|
MutexLock lock(&resolution_mu_);
|
1360
1320
|
// Update resolver transient failure.
|
1361
|
-
|
1362
|
-
resolver_transient_failure_error_ = state_error;
|
1321
|
+
resolver_transient_failure_error_ = status;
|
1363
1322
|
// Process calls that were queued waiting for the resolver result.
|
1364
1323
|
for (ResolverQueuedCall* call = resolver_queued_calls_; call != nullptr;
|
1365
1324
|
call = call->next) {
|
@@ -1371,27 +1330,36 @@ void ClientChannel::OnResolverErrorLocked(grpc_error_handle error) {
|
|
1371
1330
|
}
|
1372
1331
|
}
|
1373
1332
|
}
|
1333
|
+
GRPC_ERROR_UNREF(error);
|
1374
1334
|
// Update connectivity state.
|
1375
1335
|
UpdateStateAndPickerLocked(
|
1376
1336
|
GRPC_CHANNEL_TRANSIENT_FAILURE, status, "resolver failure",
|
1377
1337
|
absl::make_unique<LoadBalancingPolicy::TransientFailurePicker>(status));
|
1378
1338
|
}
|
1379
|
-
GRPC_ERROR_UNREF(error);
|
1380
1339
|
}
|
1381
1340
|
|
1382
1341
|
void ClientChannel::CreateOrUpdateLbPolicyLocked(
|
1383
1342
|
RefCountedPtr<LoadBalancingPolicy::Config> lb_policy_config,
|
1343
|
+
const absl::optional<std::string>& health_check_service_name,
|
1384
1344
|
Resolver::Result result) {
|
1385
1345
|
// Construct update.
|
1386
1346
|
LoadBalancingPolicy::UpdateArgs update_args;
|
1387
1347
|
update_args.addresses = std::move(result.addresses);
|
1388
1348
|
update_args.config = std::move(lb_policy_config);
|
1349
|
+
update_args.resolution_note = std::move(result.resolution_note);
|
1350
|
+
// Add health check service name to channel args.
|
1351
|
+
absl::InlinedVector<grpc_arg, 1> args_to_add;
|
1352
|
+
if (health_check_service_name.has_value()) {
|
1353
|
+
args_to_add.push_back(grpc_channel_arg_string_create(
|
1354
|
+
const_cast<char*>(GRPC_ARG_HEALTH_CHECK_SERVICE_NAME),
|
1355
|
+
const_cast<char*>(health_check_service_name->c_str())));
|
1356
|
+
}
|
1389
1357
|
// Remove the config selector from channel args so that we're not holding
|
1390
1358
|
// unnecessary refs that cause it to be destroyed somewhere other than in the
|
1391
1359
|
// WorkSerializer.
|
1392
|
-
const char*
|
1393
|
-
update_args.args =
|
1394
|
-
|
1360
|
+
const char* arg_to_remove = GRPC_ARG_CONFIG_SELECTOR;
|
1361
|
+
update_args.args = grpc_channel_args_copy_and_add_and_remove(
|
1362
|
+
result.args, &arg_to_remove, 1, args_to_add.data(), args_to_add.size());
|
1395
1363
|
// Create policy if needed.
|
1396
1364
|
if (lb_policy_ == nullptr) {
|
1397
1365
|
lb_policy_ = CreateLbPolicyLocked(*update_args.args);
|
@@ -1450,9 +1418,7 @@ void ClientChannel::RemoveResolverQueuedCall(ResolverQueuedCall* to_remove,
|
|
1450
1418
|
|
1451
1419
|
void ClientChannel::UpdateServiceConfigInControlPlaneLocked(
|
1452
1420
|
RefCountedPtr<ServiceConfig> service_config,
|
1453
|
-
RefCountedPtr<ConfigSelector> config_selector,
|
1454
|
-
const internal::ClientChannelGlobalParsedConfig* parsed_service_config,
|
1455
|
-
const char* lb_policy_name) {
|
1421
|
+
RefCountedPtr<ConfigSelector> config_selector, const char* lb_policy_name) {
|
1456
1422
|
UniquePtr<char> service_config_json(
|
1457
1423
|
gpr_strdup(service_config->json_string().c_str()));
|
1458
1424
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
|
@@ -1462,17 +1428,6 @@ void ClientChannel::UpdateServiceConfigInControlPlaneLocked(
|
|
1462
1428
|
}
|
1463
1429
|
// Save service config.
|
1464
1430
|
saved_service_config_ = std::move(service_config);
|
1465
|
-
// Update health check service name if needed.
|
1466
|
-
if (health_check_service_name_ !=
|
1467
|
-
parsed_service_config->health_check_service_name()) {
|
1468
|
-
health_check_service_name_ =
|
1469
|
-
parsed_service_config->health_check_service_name();
|
1470
|
-
// Update health check service name used by existing subchannel wrappers.
|
1471
|
-
for (auto* subchannel_wrapper : subchannel_wrappers_) {
|
1472
|
-
subchannel_wrapper->UpdateHealthCheckServiceName(
|
1473
|
-
health_check_service_name_);
|
1474
|
-
}
|
1475
|
-
}
|
1476
1431
|
// Swap out the data used by GetChannelInfo().
|
1477
1432
|
UniquePtr<char> lb_policy_name_owned(gpr_strdup(lb_policy_name));
|
1478
1433
|
{
|
@@ -1530,11 +1485,9 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1530
1485
|
//
|
1531
1486
|
// We defer unreffing the old values (and deallocating memory) until
|
1532
1487
|
// after releasing the lock to keep the critical section small.
|
1533
|
-
std::set<grpc_call_element*> calls_pending_resolver_result;
|
1534
1488
|
{
|
1535
1489
|
MutexLock lock(&resolution_mu_);
|
1536
|
-
|
1537
|
-
resolver_transient_failure_error_ = GRPC_ERROR_NONE;
|
1490
|
+
resolver_transient_failure_error_ = absl::OkStatus();
|
1538
1491
|
// Update service config.
|
1539
1492
|
received_service_config_data_ = true;
|
1540
1493
|
// Old values will be unreffed after lock is released.
|
@@ -1570,8 +1523,8 @@ void ClientChannel::CreateResolverLocked() {
|
|
1570
1523
|
gpr_log(GPR_INFO, "chand=%p: starting name resolution", this);
|
1571
1524
|
}
|
1572
1525
|
resolver_ = ResolverRegistry::CreateResolver(
|
1573
|
-
|
1574
|
-
absl::make_unique<ResolverResultHandler>(this));
|
1526
|
+
uri_to_resolve_.c_str(), channel_args_, interested_parties_,
|
1527
|
+
work_serializer_, absl::make_unique<ResolverResultHandler>(this));
|
1575
1528
|
// Since the validity of the args was checked when the channel was created,
|
1576
1529
|
// CreateResolver() must return a non-null result.
|
1577
1530
|
GPR_ASSERT(resolver_ != nullptr);
|
@@ -1635,30 +1588,9 @@ void ClientChannel::UpdateStateAndPickerLocked(
|
|
1635
1588
|
channelz::ChannelNode::GetChannelConnectivityStateChangeString(
|
1636
1589
|
state)));
|
1637
1590
|
}
|
1638
|
-
// Grab data plane lock to
|
1639
|
-
//
|
1640
|
-
// Note that we want to minimize the work done while holding the data
|
1641
|
-
// plane lock, to keep the critical section small. So, for all of the
|
1642
|
-
// objects that we might wind up unreffing here, we actually hold onto
|
1643
|
-
// the refs until after we release the lock, and then unref them at
|
1644
|
-
// that point. This includes the following:
|
1645
|
-
// - refs to subchannel wrappers in the keys of pending_subchannel_updates_
|
1646
|
-
// - ownership of the existing picker in picker_
|
1591
|
+
// Grab data plane lock to update the picker.
|
1647
1592
|
{
|
1648
1593
|
MutexLock lock(&data_plane_mu_);
|
1649
|
-
// Handle subchannel updates.
|
1650
|
-
for (auto& p : pending_subchannel_updates_) {
|
1651
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
|
1652
|
-
gpr_log(GPR_INFO,
|
1653
|
-
"chand=%p: updating subchannel wrapper %p data plane "
|
1654
|
-
"connected_subchannel to %p",
|
1655
|
-
this, p.first.get(), p.second.get());
|
1656
|
-
}
|
1657
|
-
// Note: We do not remove the entry from pending_subchannel_updates_
|
1658
|
-
// here, since this would unref the subchannel wrapper; instead,
|
1659
|
-
// we wait until we've released the lock to clear the map.
|
1660
|
-
p.first->set_connected_subchannel_in_data_plane(std::move(p.second));
|
1661
|
-
}
|
1662
1594
|
// Swap out the picker.
|
1663
1595
|
// Note: Original value will be destroyed after the lock is released.
|
1664
1596
|
picker_.swap(picker);
|
@@ -1680,9 +1612,6 @@ void ClientChannel::UpdateStateAndPickerLocked(
|
|
1680
1612
|
}
|
1681
1613
|
}
|
1682
1614
|
}
|
1683
|
-
// Clear the pending update map after releasing the lock, to keep the
|
1684
|
-
// critical section small.
|
1685
|
-
pending_subchannel_updates_.clear();
|
1686
1615
|
}
|
1687
1616
|
|
1688
1617
|
namespace {
|
@@ -1735,7 +1664,7 @@ grpc_error_handle ClientChannel::DoPingLocked(grpc_transport_op* op) {
|
|
1735
1664
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::work_serializer_) {
|
1736
1665
|
SubchannelWrapper* subchannel = static_cast<SubchannelWrapper*>(
|
1737
1666
|
complete_pick->subchannel.get());
|
1738
|
-
ConnectedSubchannel
|
1667
|
+
RefCountedPtr<ConnectedSubchannel> connected_subchannel =
|
1739
1668
|
subchannel->connected_subchannel();
|
1740
1669
|
connected_subchannel->Ping(op->send_ping.on_initiate,
|
1741
1670
|
op->send_ping.on_ack);
|
@@ -1793,7 +1722,7 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
|
|
1793
1722
|
if (grpc_error_get_int(op->disconnect_with_error,
|
1794
1723
|
GRPC_ERROR_INT_CHANNEL_CONNECTIVITY_STATE, &value) &&
|
1795
1724
|
static_cast<grpc_connectivity_state>(value) == GRPC_CHANNEL_IDLE) {
|
1796
|
-
if (
|
1725
|
+
if (disconnect_error_ == GRPC_ERROR_NONE) {
|
1797
1726
|
// Enter IDLE state.
|
1798
1727
|
UpdateStateAndPickerLocked(GRPC_CHANNEL_IDLE, absl::Status(),
|
1799
1728
|
"channel entering IDLE", nullptr);
|
@@ -1801,10 +1730,8 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
|
|
1801
1730
|
GRPC_ERROR_UNREF(op->disconnect_with_error);
|
1802
1731
|
} else {
|
1803
1732
|
// Disconnect.
|
1804
|
-
GPR_ASSERT(disconnect_error_
|
1805
|
-
|
1806
|
-
disconnect_error_.store(op->disconnect_with_error,
|
1807
|
-
std::memory_order_release);
|
1733
|
+
GPR_ASSERT(disconnect_error_ == GRPC_ERROR_NONE);
|
1734
|
+
disconnect_error_ = op->disconnect_with_error;
|
1808
1735
|
UpdateStateAndPickerLocked(
|
1809
1736
|
GRPC_CHANNEL_SHUTDOWN, absl::Status(), "shutdown from API",
|
1810
1737
|
absl::make_unique<LoadBalancingPolicy::TransientFailurePicker>(
|
@@ -1869,17 +1796,6 @@ void ClientChannel::RemoveLbQueuedCall(LbQueuedCall* to_remove,
|
|
1869
1796
|
}
|
1870
1797
|
}
|
1871
1798
|
|
1872
|
-
RefCountedPtr<ConnectedSubchannel>
|
1873
|
-
ClientChannel::GetConnectedSubchannelInDataPlane(
|
1874
|
-
SubchannelInterface* subchannel) const {
|
1875
|
-
SubchannelWrapper* subchannel_wrapper =
|
1876
|
-
static_cast<SubchannelWrapper*>(subchannel);
|
1877
|
-
ConnectedSubchannel* connected_subchannel =
|
1878
|
-
subchannel_wrapper->connected_subchannel_in_data_plane();
|
1879
|
-
if (connected_subchannel == nullptr) return nullptr;
|
1880
|
-
return connected_subchannel->Ref();
|
1881
|
-
}
|
1882
|
-
|
1883
1799
|
void ClientChannel::TryToConnectLocked() {
|
1884
1800
|
if (lb_policy_ != nullptr) {
|
1885
1801
|
lb_policy_->ExitIdleLocked();
|
@@ -2274,15 +2190,16 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
|
|
2274
2190
|
ConfigSelector::CallConfig call_config =
|
2275
2191
|
config_selector->GetCallConfig({&path_, initial_metadata, arena_});
|
2276
2192
|
if (call_config.error != GRPC_ERROR_NONE) return call_config.error;
|
2277
|
-
// Create a
|
2278
|
-
// ServiceConfig and caches the right set of parsed configs
|
2279
|
-
// the call. The
|
2280
|
-
// so that it can be accessed by filters
|
2281
|
-
// will be cleaned up when the call ends.
|
2282
|
-
auto* service_config_call_data =
|
2283
|
-
|
2284
|
-
|
2285
|
-
|
2193
|
+
// Create a ClientChannelServiceConfigCallData for the call. This stores
|
2194
|
+
// a ref to the ServiceConfig and caches the right set of parsed configs
|
2195
|
+
// to use for the call. The ClientChannelServiceConfigCallData will store
|
2196
|
+
// itself in the call context, so that it can be accessed by filters
|
2197
|
+
// below us in the stack, and it will be cleaned up when the call ends.
|
2198
|
+
auto* service_config_call_data =
|
2199
|
+
arena_->New<ClientChannelServiceConfigCallData>(
|
2200
|
+
std::move(call_config.service_config), call_config.method_configs,
|
2201
|
+
std::move(call_config.call_attributes),
|
2202
|
+
call_config.call_dispatch_controller, call_context_);
|
2286
2203
|
// Apply our own method params to the call.
|
2287
2204
|
auto* method_params = static_cast<ClientChannelMethodParsedConfig*>(
|
2288
2205
|
service_config_call_data->GetMethodParsedConfig(
|
@@ -2324,8 +2241,9 @@ void ClientChannel::CallData::
|
|
2324
2241
|
RecvTrailingMetadataReadyForConfigSelectorCommitCallback(
|
2325
2242
|
void* arg, grpc_error_handle error) {
|
2326
2243
|
auto* self = static_cast<CallData*>(arg);
|
2327
|
-
auto* service_config_call_data =
|
2328
|
-
|
2244
|
+
auto* service_config_call_data =
|
2245
|
+
static_cast<ClientChannelServiceConfigCallData*>(
|
2246
|
+
self->call_context_[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value);
|
2329
2247
|
if (service_config_call_data != nullptr) {
|
2330
2248
|
service_config_call_data->call_dispatch_controller()->Commit();
|
2331
2249
|
}
|
@@ -2425,12 +2343,11 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
|
|
2425
2343
|
if (GPR_UNLIKELY(!chand->received_service_config_data_)) {
|
2426
2344
|
// If the resolver returned transient failure before returning the
|
2427
2345
|
// first service config, fail any non-wait_for_ready calls.
|
2428
|
-
|
2429
|
-
if (resolver_error
|
2430
|
-
|
2431
|
-
0) {
|
2346
|
+
absl::Status resolver_error = chand->resolver_transient_failure_error_;
|
2347
|
+
if (!resolver_error.ok() && (send_initial_metadata_flags &
|
2348
|
+
GRPC_INITIAL_METADATA_WAIT_FOR_READY) == 0) {
|
2432
2349
|
MaybeRemoveCallFromResolverQueuedCallsLocked(elem);
|
2433
|
-
*error =
|
2350
|
+
*error = absl_status_to_grpc_error(resolver_error);
|
2434
2351
|
return true;
|
2435
2352
|
}
|
2436
2353
|
// Either the resolver has not yet returned a result, or it has
|
@@ -2486,35 +2403,67 @@ void ClientChannel::CallData::CreateDynamicCall(grpc_call_element* elem) {
|
|
2486
2403
|
class ClientChannel::LoadBalancedCall::Metadata
|
2487
2404
|
: public LoadBalancingPolicy::MetadataInterface {
|
2488
2405
|
public:
|
2489
|
-
Metadata(
|
2490
|
-
: lb_call_(lb_call), batch_(batch) {}
|
2406
|
+
explicit Metadata(grpc_metadata_batch* batch) : batch_(batch) {}
|
2491
2407
|
|
2492
2408
|
void Add(absl::string_view key, absl::string_view value) override {
|
2493
|
-
|
2494
|
-
|
2495
|
-
|
2496
|
-
|
2497
|
-
|
2498
|
-
|
2499
|
-
|
2409
|
+
// Gross, egregious hack to support legacy grpclb behavior.
|
2410
|
+
// TODO(ctiller): Use a promise context for this once that plumbing is done.
|
2411
|
+
if (key == GrpcLbClientStatsMetadata::key()) {
|
2412
|
+
batch_->Set(
|
2413
|
+
GrpcLbClientStatsMetadata(),
|
2414
|
+
const_cast<GrpcLbClientStats*>(
|
2415
|
+
reinterpret_cast<const GrpcLbClientStats*>(value.data())));
|
2416
|
+
return;
|
2417
|
+
}
|
2418
|
+
batch_->Append(key, Slice::FromStaticString(value),
|
2419
|
+
[key](absl::string_view error, const Slice& value) {
|
2420
|
+
gpr_log(GPR_ERROR, "%s",
|
2421
|
+
absl::StrCat(error, " key:", key,
|
2422
|
+
" value:", value.as_string_view())
|
2423
|
+
.c_str());
|
2424
|
+
});
|
2500
2425
|
}
|
2501
2426
|
|
2502
2427
|
std::vector<std::pair<std::string, std::string>> TestOnlyCopyToVector()
|
2503
2428
|
override {
|
2504
|
-
|
2505
|
-
|
2506
|
-
|
2507
|
-
|
2508
|
-
|
2509
|
-
|
2510
|
-
|
2511
|
-
|
2512
|
-
}
|
2513
|
-
return result;
|
2429
|
+
Encoder encoder;
|
2430
|
+
batch_->Encode(&encoder);
|
2431
|
+
return encoder.Take();
|
2432
|
+
}
|
2433
|
+
|
2434
|
+
absl::optional<absl::string_view> Lookup(absl::string_view key,
|
2435
|
+
std::string* buffer) const override {
|
2436
|
+
return batch_->GetStringValue(key, buffer);
|
2514
2437
|
}
|
2515
2438
|
|
2516
2439
|
private:
|
2517
|
-
|
2440
|
+
class Encoder {
|
2441
|
+
public:
|
2442
|
+
void Encode(const Slice& key, const Slice& value) {
|
2443
|
+
out_.emplace_back(std::string(key.as_string_view()),
|
2444
|
+
std::string(value.as_string_view()));
|
2445
|
+
}
|
2446
|
+
|
2447
|
+
template <class Which>
|
2448
|
+
void Encode(Which, const typename Which::ValueType& value) {
|
2449
|
+
auto value_slice = Which::Encode(value);
|
2450
|
+
out_.emplace_back(std::string(Which::key()),
|
2451
|
+
std::string(value_slice.as_string_view()));
|
2452
|
+
}
|
2453
|
+
|
2454
|
+
void Encode(GrpcTimeoutMetadata, grpc_millis) {}
|
2455
|
+
void Encode(HttpPathMetadata, const Slice&) {}
|
2456
|
+
void Encode(HttpMethodMetadata,
|
2457
|
+
const typename HttpMethodMetadata::ValueType&) {}
|
2458
|
+
|
2459
|
+
std::vector<std::pair<std::string, std::string>> Take() {
|
2460
|
+
return std::move(out_);
|
2461
|
+
}
|
2462
|
+
|
2463
|
+
private:
|
2464
|
+
std::vector<std::pair<std::string, std::string>> out_;
|
2465
|
+
};
|
2466
|
+
|
2518
2467
|
grpc_metadata_batch* batch_;
|
2519
2468
|
};
|
2520
2469
|
|
@@ -2529,19 +2478,6 @@ class ClientChannel::LoadBalancedCall::LbCallState
|
|
2529
2478
|
|
2530
2479
|
void* Alloc(size_t size) override { return lb_call_->arena_->Alloc(size); }
|
2531
2480
|
|
2532
|
-
const LoadBalancingPolicy::BackendMetricData* GetBackendMetricData()
|
2533
|
-
override {
|
2534
|
-
if (lb_call_->backend_metric_data_ == nullptr) {
|
2535
|
-
grpc_linked_mdelem* md = lb_call_->recv_trailing_metadata_->idx.named
|
2536
|
-
.x_endpoint_load_metrics_bin;
|
2537
|
-
if (md != nullptr) {
|
2538
|
-
lb_call_->backend_metric_data_ =
|
2539
|
-
ParseBackendMetricData(GRPC_MDVALUE(md->md), lb_call_->arena_);
|
2540
|
-
}
|
2541
|
-
}
|
2542
|
-
return lb_call_->backend_metric_data_;
|
2543
|
-
}
|
2544
|
-
|
2545
2481
|
absl::string_view ExperimentalGetCallAttribute(const char* key) override {
|
2546
2482
|
auto* service_config_call_data = static_cast<ServiceConfigCallData*>(
|
2547
2483
|
lb_call_->call_context_[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value);
|
@@ -2556,7 +2492,32 @@ class ClientChannel::LoadBalancedCall::LbCallState
|
|
2556
2492
|
};
|
2557
2493
|
|
2558
2494
|
//
|
2559
|
-
// LoadBalancedCall
|
2495
|
+
// ClientChannel::LoadBalancedCall::BackendMetricAccessor
|
2496
|
+
//
|
2497
|
+
|
2498
|
+
class ClientChannel::LoadBalancedCall::BackendMetricAccessor
|
2499
|
+
: public LoadBalancingPolicy::BackendMetricAccessor {
|
2500
|
+
public:
|
2501
|
+
explicit BackendMetricAccessor(LoadBalancedCall* lb_call)
|
2502
|
+
: lb_call_(lb_call) {}
|
2503
|
+
|
2504
|
+
const BackendMetricData* GetBackendMetricData() override {
|
2505
|
+
if (lb_call_->backend_metric_data_ == nullptr) {
|
2506
|
+
if (const auto* md = lb_call_->recv_trailing_metadata_->get_pointer(
|
2507
|
+
XEndpointLoadMetricsBinMetadata())) {
|
2508
|
+
lb_call_->backend_metric_data_ =
|
2509
|
+
ParseBackendMetricData(*md, lb_call_->arena_);
|
2510
|
+
}
|
2511
|
+
}
|
2512
|
+
return lb_call_->backend_metric_data_;
|
2513
|
+
}
|
2514
|
+
|
2515
|
+
private:
|
2516
|
+
LoadBalancedCall* lb_call_;
|
2517
|
+
};
|
2518
|
+
|
2519
|
+
//
|
2520
|
+
// ClientChannel::LoadBalancedCall
|
2560
2521
|
//
|
2561
2522
|
|
2562
2523
|
namespace {
|
@@ -2594,12 +2555,11 @@ ClientChannel::LoadBalancedCall::LoadBalancedCall(
|
|
2594
2555
|
GetCallAttemptTracer(args.context, is_transparent_retry)) {}
|
2595
2556
|
|
2596
2557
|
ClientChannel::LoadBalancedCall::~LoadBalancedCall() {
|
2597
|
-
grpc_slice_unref_internal(path_);
|
2598
2558
|
GRPC_ERROR_UNREF(cancel_error_);
|
2599
2559
|
GRPC_ERROR_UNREF(failure_error_);
|
2600
2560
|
if (backend_metric_data_ != nullptr) {
|
2601
|
-
backend_metric_data_
|
2602
|
-
|
2561
|
+
backend_metric_data_->LoadBalancingPolicy::BackendMetricAccessor::
|
2562
|
+
BackendMetricData::~BackendMetricData();
|
2603
2563
|
}
|
2604
2564
|
// Make sure there are no remaining pending batches.
|
2605
2565
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
@@ -2900,27 +2860,25 @@ void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
|
|
2900
2860
|
auto* self = static_cast<LoadBalancedCall*>(arg);
|
2901
2861
|
// Check if we have a tracer or an LB callback to invoke.
|
2902
2862
|
if (self->call_attempt_tracer_ != nullptr ||
|
2903
|
-
self->
|
2863
|
+
self->lb_subchannel_call_tracker_ != nullptr) {
|
2904
2864
|
// Get the call's status.
|
2905
2865
|
absl::Status status;
|
2906
2866
|
if (error != GRPC_ERROR_NONE) {
|
2907
2867
|
// Get status from error.
|
2908
2868
|
grpc_status_code code;
|
2909
|
-
|
2869
|
+
std::string message;
|
2910
2870
|
grpc_error_get_status(error, self->deadline_, &code, &message,
|
2911
2871
|
/*http_error=*/nullptr, /*error_string=*/nullptr);
|
2912
|
-
status = absl::Status(static_cast<absl::StatusCode>(code),
|
2913
|
-
StringViewFromSlice(message));
|
2872
|
+
status = absl::Status(static_cast<absl::StatusCode>(code), message);
|
2914
2873
|
} else {
|
2915
2874
|
// Get status from headers.
|
2916
|
-
const auto&
|
2917
|
-
GPR_ASSERT(fields.grpc_status != nullptr);
|
2875
|
+
const auto& md = *self->recv_trailing_metadata_;
|
2918
2876
|
grpc_status_code code =
|
2919
|
-
|
2877
|
+
md.get(GrpcStatusMetadata()).value_or(GRPC_STATUS_UNKNOWN);
|
2920
2878
|
if (code != GRPC_STATUS_OK) {
|
2921
2879
|
absl::string_view message;
|
2922
|
-
if (
|
2923
|
-
message =
|
2880
|
+
if (const auto* grpc_message = md.get_pointer(GrpcMessageMetadata())) {
|
2881
|
+
message = grpc_message->as_string_view();
|
2924
2882
|
}
|
2925
2883
|
status = absl::Status(static_cast<absl::StatusCode>(code), message);
|
2926
2884
|
}
|
@@ -2933,11 +2891,13 @@ void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
|
|
2933
2891
|
}
|
2934
2892
|
// If the LB policy requested a callback for trailing metadata, invoke
|
2935
2893
|
// the callback.
|
2936
|
-
if (self->
|
2937
|
-
Metadata trailing_metadata(self
|
2938
|
-
|
2939
|
-
|
2940
|
-
|
2894
|
+
if (self->lb_subchannel_call_tracker_ != nullptr) {
|
2895
|
+
Metadata trailing_metadata(self->recv_trailing_metadata_);
|
2896
|
+
BackendMetricAccessor backend_metric_accessor(self);
|
2897
|
+
LoadBalancingPolicy::SubchannelCallTrackerInterface::FinishArgs args = {
|
2898
|
+
status, &trailing_metadata, &backend_metric_accessor};
|
2899
|
+
self->lb_subchannel_call_tracker_->Finish(args);
|
2900
|
+
self->lb_subchannel_call_tracker_.reset();
|
2941
2901
|
}
|
2942
2902
|
}
|
2943
2903
|
// Chain to original callback.
|
@@ -2953,7 +2913,7 @@ void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
|
|
2953
2913
|
|
2954
2914
|
void ClientChannel::LoadBalancedCall::CreateSubchannelCall() {
|
2955
2915
|
SubchannelCall::Args call_args = {
|
2956
|
-
std::move(connected_subchannel_), pollent_, path_, /*start_time=*/0,
|
2916
|
+
std::move(connected_subchannel_), pollent_, path_.Ref(), /*start_time=*/0,
|
2957
2917
|
deadline_, arena_,
|
2958
2918
|
// TODO(roth): When we implement hedging support, we will probably
|
2959
2919
|
// need to use a separate call context for each subchannel call.
|
@@ -3097,10 +3057,10 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3097
3057
|
send_initial_metadata.send_initial_metadata_flags;
|
3098
3058
|
// Perform LB pick.
|
3099
3059
|
LoadBalancingPolicy::PickArgs pick_args;
|
3100
|
-
pick_args.path =
|
3060
|
+
pick_args.path = path_.as_string_view();
|
3101
3061
|
LbCallState lb_call_state(this);
|
3102
3062
|
pick_args.call_state = &lb_call_state;
|
3103
|
-
Metadata initial_metadata(
|
3063
|
+
Metadata initial_metadata(initial_metadata_batch);
|
3104
3064
|
pick_args.initial_metadata = &initial_metadata;
|
3105
3065
|
auto result = chand_->picker_->Pick(pick_args);
|
3106
3066
|
return HandlePickResult<bool>(
|
@@ -3116,11 +3076,28 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3116
3076
|
GPR_ASSERT(complete_pick->subchannel != nullptr);
|
3117
3077
|
// Grab a ref to the connected subchannel while we're still
|
3118
3078
|
// holding the data plane mutex.
|
3119
|
-
|
3079
|
+
SubchannelWrapper* subchannel = static_cast<SubchannelWrapper*>(
|
3120
3080
|
complete_pick->subchannel.get());
|
3121
|
-
|
3122
|
-
|
3123
|
-
|
3081
|
+
connected_subchannel_ = subchannel->connected_subchannel();
|
3082
|
+
// If the subchannel has no connected subchannel (e.g., if the
|
3083
|
+
// subchannel has moved out of state READY but the LB policy hasn't
|
3084
|
+
// yet seen that change and given us a new picker), then just
|
3085
|
+
// queue the pick. We'll try again as soon as we get a new picker.
|
3086
|
+
if (connected_subchannel_ == nullptr) {
|
3087
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
|
3088
|
+
gpr_log(GPR_INFO,
|
3089
|
+
"chand=%p lb_call=%p: subchannel returned by LB picker "
|
3090
|
+
"has no connected subchannel; queueing pick",
|
3091
|
+
chand_, this);
|
3092
|
+
}
|
3093
|
+
MaybeAddCallToLbQueuedCallsLocked();
|
3094
|
+
return false;
|
3095
|
+
}
|
3096
|
+
lb_subchannel_call_tracker_ =
|
3097
|
+
std::move(complete_pick->subchannel_call_tracker);
|
3098
|
+
if (lb_subchannel_call_tracker_ != nullptr) {
|
3099
|
+
lb_subchannel_call_tracker_->Start();
|
3100
|
+
}
|
3124
3101
|
MaybeRemoveCallFromLbQueuedCallsLocked();
|
3125
3102
|
return true;
|
3126
3103
|
},
|
@@ -3142,13 +3119,6 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3142
3119
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick failed: %s",
|
3143
3120
|
chand_, this, fail_pick->status.ToString().c_str());
|
3144
3121
|
}
|
3145
|
-
// If we're shutting down, fail all RPCs.
|
3146
|
-
grpc_error_handle disconnect_error = chand_->disconnect_error();
|
3147
|
-
if (disconnect_error != GRPC_ERROR_NONE) {
|
3148
|
-
MaybeRemoveCallFromLbQueuedCallsLocked();
|
3149
|
-
*error = GRPC_ERROR_REF(disconnect_error);
|
3150
|
-
return true;
|
3151
|
-
}
|
3152
3122
|
// If wait_for_ready is false, then the error indicates the RPC
|
3153
3123
|
// attempt's final status.
|
3154
3124
|
if ((send_initial_metadata_flags &
|