grpc 1.41.0 → 1.42.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +57 -44
- data/etc/roots.pem +335 -326
- data/include/grpc/event_engine/event_engine.h +82 -42
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +98 -0
- data/include/grpc/event_engine/memory_allocator.h +210 -0
- data/include/grpc/grpc.h +4 -0
- data/include/grpc/grpc_security.h +18 -0
- data/include/grpc/grpc_security_constants.h +1 -0
- data/include/grpc/impl/codegen/port_platform.h +7 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +18 -19
- 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 +187 -252
- data/src/core/ext/filters/client_channel/client_channel.h +74 -27
- 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 -14
- data/src/core/ext/filters/client_channel/config_selector.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.h +4 -5
- data/src/core/ext/filters/client_channel/connector.h +18 -18
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +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 +12 -11
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +1 -1
- 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 +6 -15
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +166 -82
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +4 -0
- 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/load_balancer_api.cc +2 -4
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +23 -7
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +15 -10
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +2 -3
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2502 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +6 -1
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +7 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +6 -2
- 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 +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +8 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +7 -16
- data/src/core/ext/filters/client_channel/lb_policy.h +11 -1
- 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 +11 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +12 -39
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +21 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +6 -2
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +3 -1
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +77 -68
- data/src/core/ext/filters/client_channel/resolver.h +1 -1
- data/src/core/ext/filters/client_channel/resolver_factory.h +2 -0
- data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -8
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +1 -1
- data/src/core/ext/filters/client_channel/retry_filter.cc +48 -86
- 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/server_address.h +1 -1
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +49 -36
- data/src/core/ext/filters/client_channel/subchannel.cc +85 -143
- data/src/core/ext/filters/client_channel/subchannel.h +29 -49
- 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 +19 -19
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -1
- data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +41 -44
- data/src/core/ext/filters/http/client_authority_filter.cc +14 -15
- data/src/core/ext/filters/http/http_filters_plugin.cc +53 -71
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +17 -12
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +1 -1
- data/src/core/ext/filters/http/server/http_server_filter.cc +72 -69
- 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/client_channel → service_config}/service_config.cc +2 -2
- data/src/core/ext/{filters/client_channel → service_config}/service_config.h +4 -4
- data/src/core/ext/service_config/service_config_call_data.h +72 -0
- data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.cc +3 -3
- data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.h +8 -6
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -5
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +19 -24
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +27 -50
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +14 -16
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +59 -58
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +19 -16
- data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -4
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +4 -4
- 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 +41 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +8 -4
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +136 -98
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +27 -8
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +12 -25
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +37 -30
- data/src/core/ext/transport/chttp2/transport/internal.h +4 -3
- data/src/core/ext/transport/chttp2/transport/parsing.cc +30 -173
- data/src/core/ext/transport/chttp2/transport/popularity_count.h +1 -1
- data/src/core/ext/transport/chttp2/transport/writing.cc +29 -22
- data/src/core/ext/transport/inproc/inproc_transport.cc +105 -109
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +68 -34
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +139 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +16 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +53 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +15 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +13 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +23 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +14 -11
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +17 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +15 -12
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +49 -19
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +55 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +154 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +0 -2
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +58 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +182 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +58 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +130 -0
- data/src/core/ext/upb-generated/{udpa/type/v1 → xds/type/v3}/typed_struct.upb.c +7 -7
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +83 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +310 -286
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +101 -88
- 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/health_check.upbdefs.c +59 -56
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +59 -46
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +78 -82
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +323 -316
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +5 -4
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +19 -23
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +4 -3
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +5 -3
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +5 -4
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +75 -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 +13 -12
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +25 -24
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +16 -15
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +17 -16
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +33 -32
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +19 -18
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +35 -0
- data/src/core/ext/xds/xds_api.cc +325 -362
- data/src/core/ext/xds/xds_api.h +134 -82
- data/src/core/ext/xds/xds_bootstrap.h +10 -0
- data/src/core/ext/xds/xds_certificate_provider.cc +3 -3
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +113 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.h +52 -0
- data/src/core/ext/xds/xds_client.cc +527 -314
- data/src/core/ext/xds/xds_client.h +42 -37
- data/src/core/ext/xds/xds_client_stats.h +1 -1
- data/src/core/ext/xds/xds_server_config_fetcher.cc +5 -7
- data/src/core/lib/address_utils/parse_address.cc +2 -0
- data/src/core/lib/avl/avl.cc +5 -5
- data/src/core/lib/backoff/backoff.cc +1 -1
- data/src/core/lib/channel/channel_args.cc +24 -6
- data/src/core/lib/channel/channel_args.h +9 -0
- data/src/core/lib/channel/channel_stack_builder.cc +3 -3
- data/src/core/lib/channel/channel_trace.cc +1 -1
- data/src/core/lib/channel/channel_trace.h +1 -1
- data/src/core/lib/channel/channelz.cc +3 -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 +2 -2
- data/src/core/lib/compression/compression_args.cc +6 -4
- data/src/core/lib/compression/compression_internal.cc +2 -2
- data/src/core/lib/compression/compression_internal.h +1 -1
- data/src/core/lib/config/core_configuration.cc +44 -2
- data/src/core/lib/config/core_configuration.h +39 -1
- data/src/core/lib/debug/stats.cc +1 -1
- data/src/core/lib/debug/stats_data.cc +13 -13
- 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 +1 -1
- data/src/core/lib/gpr/useful.h +79 -32
- data/src/core/lib/gprpp/arena.h +10 -0
- data/src/core/lib/gprpp/bitset.h +38 -16
- data/src/core/lib/gprpp/chunked_vector.h +211 -0
- data/src/core/lib/gprpp/construct_destruct.h +1 -1
- data/src/core/lib/gprpp/match.h +1 -1
- data/src/core/lib/gprpp/memory.h +6 -0
- data/src/core/lib/gprpp/overload.h +1 -1
- data/src/core/lib/gprpp/status_helper.cc +23 -3
- data/src/core/lib/gprpp/status_helper.h +12 -1
- data/src/core/lib/gprpp/table.h +411 -0
- data/src/core/lib/http/httpcli.cc +200 -182
- data/src/core/lib/http/parser.cc +2 -2
- data/src/core/lib/iomgr/call_combiner.cc +28 -10
- data/src/core/lib/iomgr/combiner.cc +6 -21
- data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -6
- data/src/core/lib/iomgr/error.cc +113 -52
- data/src/core/lib/iomgr/error.h +50 -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 +3 -3
- data/src/core/lib/iomgr/event_engine/iomgr.cc +1 -1
- data/src/core/lib/iomgr/event_engine/pollset.cc +5 -4
- data/src/core/lib/iomgr/event_engine/resolver.cc +10 -7
- data/src/core/lib/iomgr/event_engine/tcp.cc +9 -8
- data/src/core/lib/iomgr/event_engine/timer.cc +7 -2
- data/src/core/lib/iomgr/exec_ctx.cc +1 -9
- 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 +6 -20
- data/src/core/lib/iomgr/iomgr.cc +3 -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/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/resolve_address_posix.cc +5 -7
- data/src/core/lib/iomgr/resource_quota.cc +13 -11
- 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_cfstream.cc +5 -3
- data/src/core/lib/iomgr/tcp_client_custom.cc +1 -1
- data/src/core/lib/iomgr/tcp_client_posix.cc +9 -18
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -3
- data/src/core/lib/iomgr/tcp_posix.cc +4 -5
- data/src/core/lib/iomgr/tcp_server_custom.cc +2 -1
- data/src/core/lib/iomgr/tcp_server_posix.cc +3 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +4 -5
- data/src/core/lib/iomgr/tcp_windows.cc +2 -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/json/json_util.cc +68 -0
- data/src/core/lib/json/json_util.h +57 -99
- data/src/core/lib/json/json_writer.cc +0 -3
- 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 +14 -12
- data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +13 -1
- data/src/core/lib/security/context/security_context.cc +4 -2
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +1 -1
- data/src/core/lib/security/credentials/credentials.cc +4 -2
- data/src/core/lib/security/credentials/credentials.h +6 -1
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +47 -11
- data/src/core/lib/security/credentials/external/external_account_credentials.h +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -9
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +2 -2
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/security_connector.cc +9 -4
- data/src/core/lib/security/security_connector/security_connector.h +1 -1
- data/src/core/lib/security/security_connector/ssl_utils.cc +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +1 -0
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +0 -2
- data/src/core/lib/security/transport/client_auth_filter.cc +5 -5
- data/src/core/lib/security/transport/security_handshaker.cc +73 -43
- data/src/core/lib/security/transport/server_auth_filter.cc +3 -5
- data/src/core/lib/security/transport/tsi_error.cc +3 -5
- data/src/core/lib/slice/slice.cc +0 -16
- data/src/core/lib/slice/slice_api.cc +39 -0
- data/src/core/lib/slice/slice_buffer.cc +5 -5
- data/src/core/lib/slice/slice_intern.cc +8 -13
- data/src/core/lib/slice/slice_internal.h +1 -244
- data/src/core/lib/slice/slice_refcount.cc +17 -0
- data/src/core/lib/slice/slice_refcount.h +121 -0
- data/src/core/lib/slice/slice_refcount_base.h +173 -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/slice/static_slice.cc +529 -0
- data/src/core/lib/slice/static_slice.h +331 -0
- data/src/core/lib/surface/builtins.cc +49 -0
- data/src/core/{ext/filters/workarounds/workaround_cronet_compression_filter.h → lib/surface/builtins.h} +8 -9
- data/src/core/lib/surface/call.cc +103 -120
- data/src/core/lib/surface/call.h +0 -6
- data/src/core/lib/surface/channel.cc +19 -32
- data/src/core/lib/surface/channel.h +0 -9
- 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 +6 -5
- data/src/core/lib/surface/init.cc +0 -39
- data/src/core/lib/surface/init_secure.cc +17 -14
- data/src/core/lib/surface/lame_client.cc +18 -11
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +25 -17
- data/src/core/lib/surface/server.h +17 -10
- data/src/core/lib/surface/validate_metadata.cc +5 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +1 -1
- data/src/core/lib/transport/error_utils.cc +42 -17
- data/src/core/lib/transport/error_utils.h +1 -1
- data/src/core/lib/transport/metadata.cc +31 -10
- data/src/core/lib/transport/metadata.h +2 -1
- data/src/core/lib/transport/metadata_batch.cc +35 -371
- data/src/core/lib/transport/metadata_batch.h +905 -71
- data/src/core/lib/transport/parsed_metadata.h +263 -0
- data/src/core/lib/transport/pid_controller.cc +4 -4
- data/src/core/lib/transport/static_metadata.cc +714 -846
- data/src/core/lib/transport/static_metadata.h +115 -379
- data/src/core/lib/transport/status_metadata.cc +1 -0
- data/src/core/lib/transport/transport.cc +4 -5
- data/src/core/lib/transport/transport_op_string.cc +40 -20
- data/src/core/plugin_registry/grpc_plugin_registry.cc +64 -43
- 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 +1 -2
- 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 +36 -73
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +16 -50
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -3
- data/src/core/tsi/ssl_transport_security.cc +10 -2
- 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 +12 -9
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -2
- data/src/ruby/spec/client_server_spec.rb +1 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +4 -4
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +11 -6
- data/third_party/address_sorting/address_sorting_posix.c +1 -0
- data/third_party/boringssl-with-bazel/err_data.c +278 -272
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +21 -22
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +15 -22
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +13 -7
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +19 -29
- data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/a_strex.c +268 -271
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +106 -153
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +0 -39
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/charmap.h +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +38 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +289 -198
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +9 -13
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +11 -8
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -6
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -17
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +4 -6
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +9 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +45 -65
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +21 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +5 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +10 -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/md4/md4.c +4 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +4 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +24 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +4 -2
- 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/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +12 -9
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -9
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -8
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +16 -7
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +9 -4
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +151 -12
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +181 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +246 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +11 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +0 -179
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +11 -50
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +0 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +22 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +11 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +4 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +24 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +17 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +112 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +71 -26
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +366 -227
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +2 -9
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +10 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +3 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +9 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +8 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +9 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -20
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +12 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +5 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +37 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +28 -14
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +31 -32
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +529 -91
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -695
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +48 -8
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +266 -357
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +90 -152
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +15 -13
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +75 -79
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +96 -97
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +63 -43
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +6 -12
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +14 -17
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +14 -27
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +203 -203
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +30 -41
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +47 -33
- 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
- metadata +77 -64
- 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/incoming_metadata.cc +0 -66
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +0 -58
- 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.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/iomgr/udp_server.cc +0 -747
- data/src/core/lib/iomgr/udp_server.h +0 -103
- data/src/core/lib/transport/authority_override.cc +0 -40
- data/src/core/lib/transport/authority_override.h +0 -37
@@ -36,10 +36,14 @@
|
|
36
36
|
#include "src/core/ext/filters/client_channel/resolver.h"
|
37
37
|
#include "src/core/ext/filters/client_channel/resolver_result_parsing.h"
|
38
38
|
#include "src/core/ext/filters/client_channel/retry_throttle.h"
|
39
|
-
#include "src/core/ext/filters/client_channel/service_config.h"
|
40
39
|
#include "src/core/ext/filters/client_channel/subchannel.h"
|
41
40
|
#include "src/core/ext/filters/client_channel/subchannel_pool_interface.h"
|
41
|
+
#include "src/core/ext/service_config/service_config.h"
|
42
|
+
#include "src/core/ext/service_config/service_config_call_data.h"
|
43
|
+
#include "src/core/ext/service_config/service_config_parser.h"
|
42
44
|
#include "src/core/lib/channel/call_tracer.h"
|
45
|
+
#include "src/core/lib/channel/context.h"
|
46
|
+
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
43
47
|
#include "src/core/lib/gprpp/sync.h"
|
44
48
|
#include "src/core/lib/iomgr/error.h"
|
45
49
|
#include "src/core/lib/iomgr/polling_entity.h"
|
@@ -207,11 +211,6 @@ class ClientChannel {
|
|
207
211
|
static void GetChannelInfo(grpc_channel_element* elem,
|
208
212
|
const grpc_channel_info* info);
|
209
213
|
|
210
|
-
// Note: Does NOT return a new ref.
|
211
|
-
grpc_error_handle disconnect_error() const {
|
212
|
-
return disconnect_error_.load(std::memory_order_acquire);
|
213
|
-
}
|
214
|
-
|
215
214
|
// Note: All methods with "Locked" suffix must be invoked from within
|
216
215
|
// work_serializer_.
|
217
216
|
|
@@ -222,6 +221,7 @@ class ClientChannel {
|
|
222
221
|
|
223
222
|
void CreateOrUpdateLbPolicyLocked(
|
224
223
|
RefCountedPtr<LoadBalancingPolicy::Config> lb_policy_config,
|
224
|
+
const absl::optional<std::string>& health_check_service_name,
|
225
225
|
Resolver::Result result) ABSL_EXCLUSIVE_LOCKS_REQUIRED(work_serializer_);
|
226
226
|
OrphanablePtr<LoadBalancingPolicy> CreateLbPolicyLocked(
|
227
227
|
const grpc_channel_args& args)
|
@@ -235,9 +235,7 @@ class ClientChannel {
|
|
235
235
|
|
236
236
|
void UpdateServiceConfigInControlPlaneLocked(
|
237
237
|
RefCountedPtr<ServiceConfig> service_config,
|
238
|
-
RefCountedPtr<ConfigSelector> config_selector,
|
239
|
-
const internal::ClientChannelGlobalParsedConfig* parsed_service_config,
|
240
|
-
const char* lb_policy_name)
|
238
|
+
RefCountedPtr<ConfigSelector> config_selector, const char* lb_policy_name)
|
241
239
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(work_serializer_);
|
242
240
|
|
243
241
|
void UpdateServiceConfigInDataPlaneLocked()
|
@@ -268,9 +266,6 @@ class ClientChannel {
|
|
268
266
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(data_plane_mu_);
|
269
267
|
void RemoveLbQueuedCall(LbQueuedCall* to_remove, grpc_polling_entity* pollent)
|
270
268
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(data_plane_mu_);
|
271
|
-
RefCountedPtr<ConnectedSubchannel> GetConnectedSubchannelInDataPlane(
|
272
|
-
SubchannelInterface* subchannel) const
|
273
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(data_plane_mu_);
|
274
269
|
|
275
270
|
//
|
276
271
|
// Fields set at construction and never modified.
|
@@ -280,8 +275,8 @@ class ClientChannel {
|
|
280
275
|
ClientChannelFactory* client_channel_factory_;
|
281
276
|
const grpc_channel_args* channel_args_;
|
282
277
|
RefCountedPtr<ServiceConfig> default_service_config_;
|
283
|
-
std::string
|
284
|
-
|
278
|
+
std::string uri_to_resolve_;
|
279
|
+
std::string default_authority_;
|
285
280
|
channelz::ChannelNode* channelz_node_;
|
286
281
|
grpc_pollset_set* interested_parties_;
|
287
282
|
|
@@ -323,8 +318,6 @@ class ClientChannel {
|
|
323
318
|
ABSL_GUARDED_BY(work_serializer_);
|
324
319
|
RefCountedPtr<ConfigSelector> saved_config_selector_
|
325
320
|
ABSL_GUARDED_BY(work_serializer_);
|
326
|
-
absl::optional<std::string> health_check_service_name_
|
327
|
-
ABSL_GUARDED_BY(work_serializer_);
|
328
321
|
OrphanablePtr<LoadBalancingPolicy> lb_policy_
|
329
322
|
ABSL_GUARDED_BY(work_serializer_);
|
330
323
|
RefCountedPtr<SubchannelPoolInterface> subchannel_pool_
|
@@ -337,18 +330,9 @@ class ClientChannel {
|
|
337
330
|
// work_serializer when the SubchannelWrappers are created and destroyed.
|
338
331
|
std::set<SubchannelWrapper*> subchannel_wrappers_
|
339
332
|
ABSL_GUARDED_BY(work_serializer_);
|
340
|
-
// Pending ConnectedSubchannel updates for each SubchannelWrapper.
|
341
|
-
// Updates are queued here in the control plane work_serializer and then
|
342
|
-
// applied in the data plane mutex when the picker is updated.
|
343
|
-
std::map<RefCountedPtr<SubchannelWrapper>, RefCountedPtr<ConnectedSubchannel>>
|
344
|
-
pending_subchannel_updates_ ABSL_GUARDED_BY(work_serializer_);
|
345
333
|
int keepalive_time_ ABSL_GUARDED_BY(work_serializer_) = -1;
|
346
|
-
|
347
|
-
|
348
|
-
// Fields accessed from both data plane mutex and control plane
|
349
|
-
// work_serializer.
|
350
|
-
//
|
351
|
-
std::atomic<grpc_error_handle> disconnect_error_{GRPC_ERROR_NONE};
|
334
|
+
grpc_error_handle disconnect_error_ ABSL_GUARDED_BY(work_serializer_) =
|
335
|
+
GRPC_ERROR_NONE;
|
352
336
|
|
353
337
|
//
|
354
338
|
// Fields guarded by a mutex, since they need to be accessed
|
@@ -529,6 +513,69 @@ class ClientChannel::LoadBalancedCall
|
|
529
513
|
grpc_transport_stream_op_batch* pending_batches_[MAX_PENDING_BATCHES] = {};
|
530
514
|
};
|
531
515
|
|
516
|
+
// A sub-class of ServiceConfigCallData used to access the
|
517
|
+
// CallDispatchController. Allocated on the arena, stored in the call
|
518
|
+
// context, and destroyed when the call is destroyed.
|
519
|
+
class ClientChannelServiceConfigCallData : public ServiceConfigCallData {
|
520
|
+
public:
|
521
|
+
ClientChannelServiceConfigCallData(
|
522
|
+
RefCountedPtr<ServiceConfig> service_config,
|
523
|
+
const ServiceConfigParser::ParsedConfigVector* method_configs,
|
524
|
+
ServiceConfigCallData::CallAttributes call_attributes,
|
525
|
+
ConfigSelector::CallDispatchController* call_dispatch_controller,
|
526
|
+
grpc_call_context_element* call_context)
|
527
|
+
: ServiceConfigCallData(std::move(service_config), method_configs,
|
528
|
+
std::move(call_attributes)),
|
529
|
+
call_dispatch_controller_(call_dispatch_controller) {
|
530
|
+
call_context[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value = this;
|
531
|
+
call_context[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].destroy = Destroy;
|
532
|
+
}
|
533
|
+
|
534
|
+
ConfigSelector::CallDispatchController* call_dispatch_controller() {
|
535
|
+
return &call_dispatch_controller_;
|
536
|
+
}
|
537
|
+
|
538
|
+
private:
|
539
|
+
// A wrapper for the CallDispatchController returned by the ConfigSelector.
|
540
|
+
// Handles the case where the ConfigSelector doees not return any
|
541
|
+
// CallDispatchController.
|
542
|
+
// Also ensures that we call Commit() at most once, which allows the
|
543
|
+
// client channel code to call Commit() when the call is complete in case
|
544
|
+
// it wasn't called earlier, without needing to know whether or not it was.
|
545
|
+
class CallDispatchControllerWrapper
|
546
|
+
: public ConfigSelector::CallDispatchController {
|
547
|
+
public:
|
548
|
+
explicit CallDispatchControllerWrapper(
|
549
|
+
ConfigSelector::CallDispatchController* call_dispatch_controller)
|
550
|
+
: call_dispatch_controller_(call_dispatch_controller) {}
|
551
|
+
|
552
|
+
bool ShouldRetry() override {
|
553
|
+
if (call_dispatch_controller_ != nullptr) {
|
554
|
+
return call_dispatch_controller_->ShouldRetry();
|
555
|
+
}
|
556
|
+
return true;
|
557
|
+
}
|
558
|
+
|
559
|
+
void Commit() override {
|
560
|
+
if (call_dispatch_controller_ != nullptr && !commit_called_) {
|
561
|
+
call_dispatch_controller_->Commit();
|
562
|
+
commit_called_ = true;
|
563
|
+
}
|
564
|
+
}
|
565
|
+
|
566
|
+
private:
|
567
|
+
ConfigSelector::CallDispatchController* call_dispatch_controller_;
|
568
|
+
bool commit_called_ = false;
|
569
|
+
};
|
570
|
+
|
571
|
+
static void Destroy(void* ptr) {
|
572
|
+
auto* self = static_cast<ClientChannelServiceConfigCallData*>(ptr);
|
573
|
+
self->~ClientChannelServiceConfigCallData();
|
574
|
+
}
|
575
|
+
|
576
|
+
CallDispatchControllerWrapper call_dispatch_controller_;
|
577
|
+
};
|
578
|
+
|
532
579
|
} // namespace grpc_core
|
533
580
|
|
534
581
|
#endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CLIENT_CHANNEL_H
|
@@ -32,7 +32,7 @@ namespace {
|
|
32
32
|
void* factory_arg_copy(void* f) { return f; }
|
33
33
|
void factory_arg_destroy(void* /*f*/) {}
|
34
34
|
int factory_arg_cmp(void* factory1, void* factory2) {
|
35
|
-
return
|
35
|
+
return QsortCompare(factory1, factory2);
|
36
36
|
}
|
37
37
|
const grpc_arg_pointer_vtable factory_arg_vtable = {
|
38
38
|
factory_arg_copy, factory_arg_destroy, factory_arg_cmp};
|
@@ -1,20 +1,18 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
*
|
17
|
-
*/
|
1
|
+
//
|
2
|
+
// Copyright 2015 gRPC authors.
|
3
|
+
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
7
|
+
//
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
//
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
15
|
+
//
|
18
16
|
|
19
17
|
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CLIENT_CHANNEL_FACTORY_H
|
20
18
|
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CLIENT_CHANNEL_FACTORY_H
|
@@ -33,7 +31,7 @@ class ClientChannelFactory {
|
|
33
31
|
|
34
32
|
// Creates a subchannel with the specified args.
|
35
33
|
virtual RefCountedPtr<Subchannel> CreateSubchannel(
|
36
|
-
const grpc_channel_args* args) = 0;
|
34
|
+
const grpc_resolved_address& address, const grpc_channel_args* args) = 0;
|
37
35
|
|
38
36
|
// Returns a channel arg containing the specified factory.
|
39
37
|
static grpc_arg CreateChannelArg(ClientChannelFactory* factory);
|
@@ -45,4 +43,4 @@ class ClientChannelFactory {
|
|
45
43
|
|
46
44
|
} // namespace grpc_core
|
47
45
|
|
48
|
-
#endif
|
46
|
+
#endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CLIENT_CHANNEL_FACTORY_H
|
@@ -36,16 +36,9 @@
|
|
36
36
|
#include "src/core/ext/filters/client_channel/resolver_result_parsing.h"
|
37
37
|
#include "src/core/ext/filters/client_channel/retry_service_config.h"
|
38
38
|
#include "src/core/ext/filters/client_channel/retry_throttle.h"
|
39
|
-
#include "src/core/
|
40
|
-
#include "src/core/lib/surface/channel_init.h"
|
41
|
-
|
42
|
-
static bool append_filter(grpc_channel_stack_builder* builder, void* arg) {
|
43
|
-
return grpc_channel_stack_builder_append_filter(
|
44
|
-
builder, static_cast<const grpc_channel_filter*>(arg), nullptr, nullptr);
|
45
|
-
}
|
39
|
+
#include "src/core/lib/config/core_configuration.h"
|
46
40
|
|
47
41
|
void grpc_client_channel_init(void) {
|
48
|
-
grpc_core::ServiceConfigParser::Init();
|
49
42
|
grpc_core::internal::ClientChannelServiceConfigParser::Register();
|
50
43
|
grpc_core::internal::RetryServiceConfigParser::Register();
|
51
44
|
grpc_core::LoadBalancingPolicyRegistry::Builder::InitRegistry();
|
@@ -54,27 +47,28 @@ void grpc_client_channel_init(void) {
|
|
54
47
|
grpc_core::ProxyMapperRegistry::Init();
|
55
48
|
grpc_core::RegisterHttpProxyMapper();
|
56
49
|
grpc_core::GlobalSubchannelPool::Init();
|
57
|
-
grpc_channel_init_register_stage(
|
58
|
-
GRPC_CLIENT_CHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY, append_filter,
|
59
|
-
const_cast<grpc_channel_filter*>(
|
60
|
-
&grpc_core::ClientChannel::kFilterVtable));
|
61
50
|
grpc_client_channel_global_init_backup_polling();
|
62
51
|
}
|
63
52
|
|
64
53
|
void grpc_client_channel_shutdown(void) {
|
65
54
|
grpc_core::GlobalSubchannelPool::Shutdown();
|
66
|
-
grpc_channel_init_shutdown();
|
67
55
|
grpc_core::ProxyMapperRegistry::Shutdown();
|
68
56
|
grpc_core::internal::ServerRetryThrottleMap::Shutdown();
|
69
57
|
grpc_core::ResolverRegistry::Builder::ShutdownRegistry();
|
70
58
|
grpc_core::LoadBalancingPolicyRegistry::Builder::ShutdownRegistry();
|
71
|
-
grpc_core::ServiceConfigParser::Shutdown();
|
72
59
|
}
|
73
60
|
|
74
61
|
namespace grpc_core {
|
75
62
|
|
76
63
|
void BuildClientChannelConfiguration(CoreConfiguration::Builder* builder) {
|
77
64
|
RegisterHttpConnectHandshaker(builder);
|
65
|
+
builder->channel_init()->RegisterStage(
|
66
|
+
GRPC_CLIENT_CHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
67
|
+
[](grpc_channel_stack_builder* builder) {
|
68
|
+
return grpc_channel_stack_builder_append_filter(
|
69
|
+
builder, &grpc_core::ClientChannel::kFilterVtable, nullptr,
|
70
|
+
nullptr);
|
71
|
+
});
|
78
72
|
}
|
79
73
|
|
80
74
|
} // namespace grpc_core
|
@@ -35,7 +35,7 @@ void ConfigSelectorArgDestroy(void* p) {
|
|
35
35
|
config_selector->Unref();
|
36
36
|
}
|
37
37
|
|
38
|
-
int ConfigSelectorArgCmp(void* p, void* q) { return
|
38
|
+
int ConfigSelectorArgCmp(void* p, void* q) { return QsortCompare(p, q); }
|
39
39
|
|
40
40
|
const grpc_arg_pointer_vtable kChannelArgVtable = {
|
41
41
|
ConfigSelectorArgCopy, ConfigSelectorArgDestroy, ConfigSelectorArgCmp};
|
@@ -27,8 +27,9 @@
|
|
27
27
|
|
28
28
|
#include <grpc/grpc.h>
|
29
29
|
|
30
|
-
#include "src/core/ext/
|
31
|
-
#include "src/core/ext/
|
30
|
+
#include "src/core/ext/service_config/service_config.h"
|
31
|
+
#include "src/core/ext/service_config/service_config_call_data.h"
|
32
|
+
#include "src/core/ext/service_config/service_config_parser.h"
|
32
33
|
#include "src/core/lib/channel/channel_stack.h"
|
33
34
|
#include "src/core/lib/gprpp/arena.h"
|
34
35
|
#include "src/core/lib/gprpp/ref_counted.h"
|
@@ -44,8 +45,6 @@ namespace grpc_core {
|
|
44
45
|
// MethodConfig and provide input to LB policies on a per-call basis.
|
45
46
|
class ConfigSelector : public RefCounted<ConfigSelector> {
|
46
47
|
public:
|
47
|
-
using CallAttributes = std::map<const char*, absl::string_view>;
|
48
|
-
|
49
48
|
// An interface to be used by the channel when dispatching calls.
|
50
49
|
class CallDispatchController {
|
51
50
|
public:
|
@@ -76,7 +75,7 @@ class ConfigSelector : public RefCounted<ConfigSelector> {
|
|
76
75
|
// the call to ensure that method_configs lives long enough.
|
77
76
|
RefCountedPtr<ServiceConfig> service_config;
|
78
77
|
// Call attributes that will be accessible to LB policy implementations.
|
79
|
-
CallAttributes call_attributes;
|
78
|
+
ServiceConfigCallData::CallAttributes call_attributes;
|
80
79
|
// Call dispatch controller.
|
81
80
|
CallDispatchController* call_dispatch_controller = nullptr;
|
82
81
|
};
|
@@ -1,20 +1,18 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
*
|
17
|
-
*/
|
1
|
+
//
|
2
|
+
// Copyright 2015 gRPC authors.
|
3
|
+
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
7
|
+
//
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
//
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
15
|
+
//
|
18
16
|
|
19
17
|
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CONNECTOR_H
|
20
18
|
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CONNECTOR_H
|
@@ -35,6 +33,8 @@ namespace grpc_core {
|
|
35
33
|
class SubchannelConnector : public InternallyRefCounted<SubchannelConnector> {
|
36
34
|
public:
|
37
35
|
struct Args {
|
36
|
+
// Address to connect to.
|
37
|
+
grpc_resolved_address* address;
|
38
38
|
// Set of pollsets interested in this connection.
|
39
39
|
grpc_pollset_set* interested_parties;
|
40
40
|
// Deadline for connection.
|
@@ -76,4 +76,4 @@ class SubchannelConnector : public InternallyRefCounted<SubchannelConnector> {
|
|
76
76
|
|
77
77
|
} // namespace grpc_core
|
78
78
|
|
79
|
-
#endif
|
79
|
+
#endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CONNECTOR_H
|
@@ -163,7 +163,7 @@ RefCountedPtr<DynamicFilters> DynamicFilters::Create(
|
|
163
163
|
// Channel stack creation failed with requested filters.
|
164
164
|
// Create with lame filter instead.
|
165
165
|
grpc_error_handle error = p.second;
|
166
|
-
grpc_arg error_arg = MakeLameClientErrorArg(error);
|
166
|
+
grpc_arg error_arg = MakeLameClientErrorArg(&error);
|
167
167
|
grpc_channel_args* new_args =
|
168
168
|
grpc_channel_args_copy_and_add(args, &error_arg, 1);
|
169
169
|
GRPC_ERROR_UNREF(error);
|
@@ -32,7 +32,6 @@ namespace grpc_core {
|
|
32
32
|
// should be only one instance of this class. Init() should be called once at
|
33
33
|
// the filter initialization time; Shutdown() should be called once at the
|
34
34
|
// filter shutdown time.
|
35
|
-
// TODO(juanlishen): Enable subchannel retention.
|
36
35
|
class GlobalSubchannelPool final : public SubchannelPoolInterface {
|
37
36
|
public:
|
38
37
|
// The ctor and dtor are not intended to use directly.
|
@@ -254,7 +254,11 @@ HealthCheckClient::CallState::CallState(
|
|
254
254
|
pollent_(grpc_polling_entity_create_from_pollset_set(interested_parties)),
|
255
255
|
arena_(Arena::Create(health_check_client_->connected_subchannel_
|
256
256
|
->GetInitialCallSizeEstimate())),
|
257
|
-
payload_(context_)
|
257
|
+
payload_(context_),
|
258
|
+
send_initial_metadata_(arena_),
|
259
|
+
send_trailing_metadata_(arena_),
|
260
|
+
recv_initial_metadata_(arena_),
|
261
|
+
recv_trailing_metadata_(arena_) {}
|
258
262
|
|
259
263
|
HealthCheckClient::CallState::~CallState() {
|
260
264
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_health_check_client_trace)) {
|
@@ -315,7 +319,6 @@ void HealthCheckClient::CallState::StartCall() {
|
|
315
319
|
batch_.on_complete = GRPC_CLOSURE_INIT(&on_complete_, OnComplete, this,
|
316
320
|
grpc_schedule_on_exec_ctx);
|
317
321
|
// Add send_initial_metadata op.
|
318
|
-
grpc_metadata_batch_init(&send_initial_metadata_);
|
319
322
|
error = grpc_metadata_batch_add_head(
|
320
323
|
&send_initial_metadata_, &path_metadata_storage_,
|
321
324
|
grpc_mdelem_from_slices(
|
@@ -333,12 +336,10 @@ void HealthCheckClient::CallState::StartCall() {
|
|
333
336
|
payload_.send_message.send_message.reset(send_message_.get());
|
334
337
|
batch_.send_message = true;
|
335
338
|
// Add send_trailing_metadata op.
|
336
|
-
grpc_metadata_batch_init(&send_trailing_metadata_);
|
337
339
|
payload_.send_trailing_metadata.send_trailing_metadata =
|
338
340
|
&send_trailing_metadata_;
|
339
341
|
batch_.send_trailing_metadata = true;
|
340
342
|
// Add recv_initial_metadata op.
|
341
|
-
grpc_metadata_batch_init(&recv_initial_metadata_);
|
342
343
|
payload_.recv_initial_metadata.recv_initial_metadata =
|
343
344
|
&recv_initial_metadata_;
|
344
345
|
payload_.recv_initial_metadata.recv_flags = nullptr;
|
@@ -363,7 +364,6 @@ void HealthCheckClient::CallState::StartCall() {
|
|
363
364
|
// Initialize recv_trailing_metadata batch.
|
364
365
|
recv_trailing_metadata_batch_.payload = &payload_;
|
365
366
|
// Add recv_trailing_metadata op.
|
366
|
-
grpc_metadata_batch_init(&recv_trailing_metadata_);
|
367
367
|
payload_.recv_trailing_metadata.recv_trailing_metadata =
|
368
368
|
&recv_trailing_metadata_;
|
369
369
|
payload_.recv_trailing_metadata.collect_stats = &collect_stats_;
|
@@ -441,8 +441,8 @@ void HealthCheckClient::CallState::OnComplete(void* arg,
|
|
441
441
|
HealthCheckClient::CallState* self =
|
442
442
|
static_cast<HealthCheckClient::CallState*>(arg);
|
443
443
|
GRPC_CALL_COMBINER_STOP(&self->call_combiner_, "on_complete");
|
444
|
-
|
445
|
-
|
444
|
+
self->send_initial_metadata_.Clear();
|
445
|
+
self->send_trailing_metadata_.Clear();
|
446
446
|
self->call_->Unref(DEBUG_LOCATION, "on_complete");
|
447
447
|
}
|
448
448
|
|
@@ -451,7 +451,7 @@ void HealthCheckClient::CallState::RecvInitialMetadataReady(
|
|
451
451
|
HealthCheckClient::CallState* self =
|
452
452
|
static_cast<HealthCheckClient::CallState*>(arg);
|
453
453
|
GRPC_CALL_COMBINER_STOP(&self->call_combiner_, "recv_initial_metadata_ready");
|
454
|
-
|
454
|
+
self->recv_initial_metadata_.Clear();
|
455
455
|
self->call_->Unref(DEBUG_LOCATION, "recv_initial_metadata_ready");
|
456
456
|
}
|
457
457
|
|
@@ -558,9 +558,10 @@ void HealthCheckClient::CallState::RecvTrailingMetadataReady(
|
|
558
558
|
grpc_error_get_status(error, GRPC_MILLIS_INF_FUTURE, &status,
|
559
559
|
nullptr /* slice */, nullptr /* http_error */,
|
560
560
|
nullptr /* error_string */);
|
561
|
-
} else if (self->recv_trailing_metadata_.
|
561
|
+
} else if (self->recv_trailing_metadata_.legacy_index()->named.grpc_status !=
|
562
|
+
nullptr) {
|
562
563
|
status = grpc_get_status_code_from_metadata(
|
563
|
-
self->recv_trailing_metadata_.
|
564
|
+
self->recv_trailing_metadata_.legacy_index()->named.grpc_status->md);
|
564
565
|
}
|
565
566
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_health_check_client_trace)) {
|
566
567
|
gpr_log(GPR_INFO,
|
@@ -569,7 +570,7 @@ void HealthCheckClient::CallState::RecvTrailingMetadataReady(
|
|
569
570
|
self->health_check_client_.get(), self, status);
|
570
571
|
}
|
571
572
|
// Clean up.
|
572
|
-
|
573
|
+
self->recv_trailing_metadata_.Clear();
|
573
574
|
// For status UNIMPLEMENTED, give up and assume always healthy.
|
574
575
|
bool retry = true;
|
575
576
|
if (status == GRPC_STATUS_UNIMPLEMENTED) {
|
@@ -19,7 +19,7 @@
|
|
19
19
|
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_HTTP_CONNECT_HANDSHAKER_H
|
20
20
|
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_HTTP_CONNECT_HANDSHAKER_H
|
21
21
|
|
22
|
-
#include <grpc/
|
22
|
+
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
24
|
#include "src/core/lib/config/core_configuration.h"
|
25
25
|
|
@@ -90,6 +90,10 @@ class ChildPolicyHandler::Helper
|
|
90
90
|
parent_->channel_control_helper()->RequestReresolution();
|
91
91
|
}
|
92
92
|
|
93
|
+
absl::string_view GetAuthority() override {
|
94
|
+
return parent_->channel_control_helper()->GetAuthority();
|
95
|
+
}
|
96
|
+
|
93
97
|
void AddTraceEvent(TraceSeverity severity,
|
94
98
|
absl::string_view message) override {
|
95
99
|
if (parent_->shutting_down_) return;
|
@@ -101,20 +101,15 @@ static void clr_start_transport_stream_op_batch(
|
|
101
101
|
// Handle send_initial_metadata.
|
102
102
|
if (batch->send_initial_metadata) {
|
103
103
|
// Grab client stats object from metadata.
|
104
|
-
|
105
|
-
batch->payload->send_initial_metadata.send_initial_metadata->
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
static_cast<const void*>(grpc_core::kGrpcLbClientStatsMetadataKey)) {
|
110
|
-
break;
|
111
|
-
}
|
112
|
-
}
|
113
|
-
if (client_stats_md != nullptr) {
|
104
|
+
auto client_stats_md =
|
105
|
+
batch->payload->send_initial_metadata.send_initial_metadata->Remove(
|
106
|
+
grpc_slice_from_static_string(
|
107
|
+
grpc_core::kGrpcLbClientStatsMetadataKey));
|
108
|
+
if (client_stats_md.has_value()) {
|
114
109
|
grpc_core::GrpcLbClientStats* client_stats =
|
115
110
|
const_cast<grpc_core::GrpcLbClientStats*>(
|
116
111
|
reinterpret_cast<const grpc_core::GrpcLbClientStats*>(
|
117
|
-
GRPC_SLICE_START_PTR(
|
112
|
+
GRPC_SLICE_START_PTR(*client_stats_md)));
|
118
113
|
if (client_stats != nullptr) {
|
119
114
|
calld->client_stats.reset(client_stats);
|
120
115
|
// Intercept completion.
|
@@ -123,10 +118,6 @@ static void clr_start_transport_stream_op_batch(
|
|
123
118
|
calld, grpc_schedule_on_exec_ctx);
|
124
119
|
batch->on_complete = &calld->on_complete_for_send;
|
125
120
|
}
|
126
|
-
// Remove metadata so it doesn't go out on the wire.
|
127
|
-
grpc_metadata_batch_remove(
|
128
|
-
batch->payload->send_initial_metadata.send_initial_metadata,
|
129
|
-
client_stats_md);
|
130
121
|
}
|
131
122
|
}
|
132
123
|
// Intercept completion of recv_initial_metadata.
|