grpc 1.64.3 → 1.65.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Makefile +57 -58
- data/include/grpc/event_engine/event_engine.h +13 -6
- data/include/grpc/impl/channel_arg_names.h +7 -3
- data/include/grpc/module.modulemap +1 -0
- data/include/grpc/passive_listener.h +62 -0
- data/include/grpc/support/log.h +7 -17
- data/include/grpc/support/port_platform.h +3 -0
- data/src/core/channelz/channel_trace.cc +1 -1
- data/src/core/channelz/channel_trace.h +1 -1
- data/src/core/channelz/channelz.cc +3 -3
- data/src/core/channelz/channelz.h +7 -7
- data/src/core/channelz/channelz_registry.cc +4 -3
- data/src/core/client_channel/backup_poller.cc +4 -5
- data/src/core/client_channel/client_channel.cc +1324 -0
- data/src/core/client_channel/client_channel.h +243 -0
- data/src/core/client_channel/client_channel_filter.cc +266 -709
- data/src/core/client_channel/client_channel_filter.h +11 -64
- data/src/core/client_channel/client_channel_internal.h +16 -5
- data/src/core/client_channel/client_channel_plugin.cc +1 -14
- data/src/core/client_channel/client_channel_service_config.h +3 -3
- data/src/core/client_channel/config_selector.cc +1 -1
- data/src/core/client_channel/config_selector.h +1 -1
- data/src/core/client_channel/dynamic_filters.cc +3 -3
- data/src/core/client_channel/dynamic_filters.h +1 -3
- data/src/core/client_channel/load_balanced_call_destination.cc +336 -0
- data/src/core/client_channel/load_balanced_call_destination.h +49 -0
- data/src/core/client_channel/retry_filter.cc +2 -9
- data/src/core/client_channel/retry_filter.h +2 -7
- data/src/core/client_channel/retry_filter_legacy_call_data.cc +65 -72
- data/src/core/client_channel/retry_filter_legacy_call_data.h +0 -2
- data/src/core/client_channel/retry_service_config.cc +4 -5
- data/src/core/client_channel/retry_service_config.h +3 -3
- data/src/core/client_channel/subchannel.cc +220 -112
- data/src/core/client_channel/subchannel.h +31 -18
- data/src/core/client_channel/subchannel_pool_interface.cc +0 -2
- data/src/core/client_channel/subchannel_pool_interface.h +2 -4
- data/src/core/client_channel/subchannel_stream_client.cc +36 -49
- data/src/core/client_channel/subchannel_stream_client.h +2 -4
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +7 -10
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +1 -0
- data/src/core/ext/filters/backend_metrics/backend_metric_provider.h +7 -0
- data/src/core/ext/filters/census/grpc_context.cc +2 -4
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +8 -15
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +2 -0
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +3 -7
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +1 -0
- data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +3 -3
- data/src/core/ext/filters/http/client/http_client_filter.cc +1 -0
- data/src/core/ext/filters/http/client/http_client_filter.h +1 -0
- data/src/core/ext/filters/http/client_authority_filter.cc +1 -0
- data/src/core/ext/filters/http/client_authority_filter.h +1 -0
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +10 -15
- data/src/core/ext/filters/http/message_compress/compression_filter.h +2 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +2 -2
- data/src/core/ext/filters/http/server/http_server_filter.h +1 -0
- data/src/core/ext/filters/message_size/message_size_filter.cc +6 -9
- data/src/core/ext/filters/message_size/message_size_filter.h +6 -6
- data/src/core/ext/filters/rbac/rbac_filter.cc +2 -5
- data/src/core/ext/filters/rbac/rbac_filter.h +1 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +2 -2
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +1 -1
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +2 -6
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +1 -0
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +3 -3
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +1 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +8 -25
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +0 -5
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +223 -148
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +33 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +131 -107
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +8 -8
- data/src/core/ext/transport/chttp2/transport/context_list_entry.h +1 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +2 -4
- data/src/core/ext/transport/chttp2/transport/flow_control.h +0 -2
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +1 -2
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +9 -5
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +5 -4
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +9 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +32 -43
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +1 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +3 -8
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +1 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +29 -19
- data/src/core/ext/transport/chttp2/transport/parsing.cc +15 -25
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +0 -2
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +0 -2
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +29 -13
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +5 -4
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +3 -5
- data/src/core/ext/transport/chttp2/transport/writing.cc +24 -25
- data/src/core/ext/transport/inproc/inproc_transport.cc +56 -32
- data/src/core/ext/transport/inproc/inproc_transport.h +1 -3
- data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +13 -15
- data/src/core/ext/transport/inproc/legacy_inproc_transport.h +0 -2
- data/src/core/handshaker/handshaker.cc +6 -14
- data/src/core/handshaker/http_connect/http_connect_handshaker.cc +9 -17
- data/src/core/handshaker/http_connect/http_proxy_mapper.cc +3 -2
- data/src/core/handshaker/security/secure_endpoint.cc +38 -32
- data/src/core/handshaker/security/secure_endpoint.h +0 -2
- data/src/core/handshaker/security/security_handshaker.cc +25 -37
- data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +2 -1
- data/src/core/lib/address_utils/parse_address.cc +27 -39
- data/src/core/lib/address_utils/sockaddr_utils.cc +5 -6
- data/src/core/lib/avl/avl.h +1 -1
- data/src/core/lib/channel/channel_args.cc +13 -17
- data/src/core/lib/channel/channel_args.h +19 -8
- data/src/core/lib/channel/channel_stack.cc +5 -63
- data/src/core/lib/channel/channel_stack.h +13 -37
- data/src/core/lib/channel/channel_stack_builder.h +0 -5
- data/src/core/lib/channel/channel_stack_builder_impl.cc +0 -142
- data/src/core/lib/channel/channel_stack_builder_impl.h +0 -2
- data/src/core/lib/channel/connected_channel.cc +37 -676
- data/src/core/lib/channel/promise_based_filter.cc +41 -47
- data/src/core/lib/channel/promise_based_filter.h +124 -477
- data/src/core/lib/channel/status_util.cc +1 -1
- data/src/core/lib/compression/compression.cc +1 -1
- data/src/core/lib/compression/message_compress.cc +6 -6
- data/src/core/lib/config/config_vars.cc +3 -8
- data/src/core/lib/config/config_vars.h +1 -5
- data/src/core/lib/debug/event_log.h +1 -1
- data/src/core/lib/debug/trace.cc +43 -59
- data/src/core/lib/debug/trace.h +2 -97
- data/src/core/lib/debug/trace_flags.cc +255 -0
- data/src/core/lib/debug/trace_flags.h +133 -0
- data/src/core/lib/debug/trace_impl.h +115 -0
- data/src/core/lib/event_engine/ares_resolver.cc +5 -7
- data/src/core/lib/event_engine/ares_resolver.h +1 -3
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +1 -1
- data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +17 -22
- data/src/core/lib/event_engine/event_engine.cc +29 -4
- data/src/core/lib/event_engine/extensions/supports_fd.h +7 -0
- data/src/core/lib/event_engine/extensions/tcp_trace.h +43 -0
- data/src/core/lib/event_engine/forkable.cc +4 -5
- data/src/core/lib/event_engine/forkable.h +0 -11
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +10 -11
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +4 -3
- data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +19 -33
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +3 -2
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +24 -7
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +2 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +14 -16
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +18 -22
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +13 -17
- data/src/core/lib/event_engine/posix_engine/timer.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +4 -6
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +2 -1
- data/src/core/lib/event_engine/shim.cc +1 -1
- data/src/core/lib/event_engine/tcp_socket_utils.cc +6 -8
- data/src/core/lib/event_engine/thread_local.h +1 -1
- data/src/core/lib/event_engine/thread_pool/thread_count.h +1 -1
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +19 -21
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +3 -6
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +14 -13
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +4 -3
- data/src/core/lib/event_engine/trace.h +6 -17
- data/src/core/lib/event_engine/windows/iocp.h +1 -1
- data/src/core/lib/event_engine/windows/win_socket.cc +23 -17
- data/src/core/lib/event_engine/windows/win_socket.h +4 -5
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +6 -9
- data/src/core/lib/event_engine/windows/windows_engine.cc +201 -87
- data/src/core/lib/event_engine/windows/windows_engine.h +136 -25
- data/src/core/lib/event_engine/windows/windows_listener.cc +12 -23
- data/src/core/lib/experiments/experiments.cc +35 -151
- data/src/core/lib/experiments/experiments.h +12 -45
- data/src/core/lib/gprpp/bitset.h +1 -1
- data/src/core/lib/gprpp/crash.cc +2 -3
- data/src/core/lib/gprpp/dual_ref_counted.h +45 -33
- data/src/core/lib/gprpp/dump_args.cc +54 -0
- data/src/core/lib/gprpp/dump_args.h +69 -0
- data/src/core/lib/gprpp/glob.cc +70 -0
- data/src/core/lib/gprpp/glob.h +29 -0
- data/src/core/lib/gprpp/per_cpu.cc +1 -1
- data/src/core/lib/gprpp/posix/stat.cc +3 -4
- data/src/core/lib/gprpp/posix/thd.cc +8 -9
- data/src/core/lib/gprpp/ref_counted.h +30 -22
- data/src/core/lib/gprpp/single_set_ptr.h +5 -3
- data/src/core/lib/gprpp/status_helper.cc +11 -30
- data/src/core/lib/gprpp/status_helper.h +3 -31
- data/src/core/lib/gprpp/time.cc +3 -4
- data/src/core/lib/gprpp/time.h +3 -2
- data/src/core/lib/gprpp/unique_type_name.h +1 -1
- data/src/core/lib/gprpp/validation_errors.cc +10 -1
- data/src/core/lib/gprpp/validation_errors.h +11 -0
- data/src/core/lib/gprpp/windows/stat.cc +3 -4
- data/src/core/lib/gprpp/windows/thd.cc +3 -2
- data/src/core/lib/gprpp/work_serializer.cc +48 -57
- data/src/core/lib/iomgr/buffer_list.cc +4 -2
- data/src/core/lib/iomgr/call_combiner.cc +18 -27
- data/src/core/lib/iomgr/call_combiner.h +1 -3
- data/src/core/lib/iomgr/cfstream_handle.cc +4 -6
- data/src/core/lib/iomgr/closure.h +2 -4
- data/src/core/lib/iomgr/combiner.cc +6 -8
- data/src/core/lib/iomgr/combiner.h +0 -2
- data/src/core/lib/iomgr/endpoint.cc +0 -6
- data/src/core/lib/iomgr/endpoint.h +0 -2
- data/src/core/lib/iomgr/endpoint_cfstream.cc +19 -41
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +1 -1
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -6
- data/src/core/lib/iomgr/error.cc +13 -21
- data/src/core/lib/iomgr/error.h +1 -1
- data/src/core/lib/iomgr/ev_apple.cc +3 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +43 -42
- data/src/core/lib/iomgr/ev_poll_posix.cc +38 -29
- data/src/core/lib/iomgr/ev_posix.cc +8 -9
- data/src/core/lib/iomgr/ev_posix.h +10 -7
- data/src/core/lib/iomgr/event_engine_shims/closure.cc +2 -2
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +14 -28
- data/src/core/lib/iomgr/exec_ctx.cc +2 -2
- data/src/core/lib/iomgr/exec_ctx.h +1 -1
- data/src/core/lib/iomgr/executor.cc +6 -15
- data/src/core/lib/iomgr/executor.h +1 -1
- data/src/core/lib/iomgr/fork_posix.cc +8 -10
- data/src/core/lib/iomgr/fork_windows.cc +3 -1
- data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +2 -3
- data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +3 -5
- data/src/core/lib/iomgr/internal_errqueue.cc +4 -2
- data/src/core/lib/iomgr/iocp_windows.cc +4 -3
- data/src/core/lib/iomgr/iomgr.cc +13 -17
- data/src/core/lib/iomgr/lockfree_event.cc +3 -5
- data/src/core/lib/iomgr/pollset.h +0 -2
- data/src/core/lib/iomgr/pollset_windows.cc +0 -2
- data/src/core/lib/iomgr/resolve_address_posix.cc +7 -14
- data/src/core/lib/iomgr/resolve_address_windows.cc +1 -1
- data/src/core/lib/iomgr/socket_factory_posix.cc +1 -1
- data/src/core/lib/iomgr/socket_mutator.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +11 -17
- data/src/core/lib/iomgr/socket_windows.cc +4 -6
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +3 -5
- data/src/core/lib/iomgr/tcp_client_posix.cc +9 -15
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -4
- data/src/core/lib/iomgr/tcp_posix.cc +57 -84
- data/src/core/lib/iomgr/tcp_posix.h +0 -2
- data/src/core/lib/iomgr/tcp_server_posix.cc +3 -3
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +4 -6
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +7 -7
- data/src/core/lib/iomgr/tcp_server_windows.cc +10 -16
- data/src/core/lib/iomgr/tcp_windows.cc +25 -41
- data/src/core/lib/iomgr/timer_generic.cc +17 -20
- data/src/core/lib/iomgr/timer_heap.cc +1 -1
- data/src/core/lib/iomgr/timer_manager.cc +17 -30
- data/src/core/lib/iomgr/unix_sockets_posix.cc +1 -1
- data/src/core/lib/iomgr/vsock.cc +1 -1
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +3 -3
- data/src/core/lib/promise/activity.h +27 -4
- data/src/core/lib/promise/cancel_callback.h +24 -0
- data/src/core/lib/promise/context.h +11 -0
- data/src/core/lib/promise/detail/basic_seq.h +1 -2
- data/src/core/lib/promise/detail/join_state.h +354 -398
- data/src/core/lib/promise/detail/promise_like.h +6 -5
- data/src/core/lib/promise/detail/seq_state.h +1178 -1178
- data/src/core/lib/promise/for_each.h +6 -6
- data/src/core/lib/promise/interceptor_list.h +6 -7
- data/src/core/lib/promise/latch.h +9 -9
- data/src/core/lib/promise/map.h +17 -0
- data/src/core/lib/promise/observable.h +182 -0
- data/src/core/lib/promise/party.cc +7 -8
- data/src/core/lib/promise/party.h +10 -8
- data/src/core/lib/promise/pipe.h +16 -35
- data/src/core/lib/promise/promise.h +1 -0
- data/src/core/lib/promise/status_flag.h +2 -0
- data/src/core/lib/resource_quota/arena.cc +56 -79
- data/src/core/lib/resource_quota/arena.h +118 -209
- data/src/core/lib/resource_quota/memory_quota.cc +12 -13
- data/src/core/lib/resource_quota/memory_quota.h +2 -3
- data/src/core/lib/resource_quota/periodic_update.cc +1 -1
- data/src/core/lib/resource_quota/resource_quota.h +1 -1
- 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 +6 -8
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +5 -6
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -0
- data/src/core/lib/security/authorization/matchers.cc +3 -3
- data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +2 -2
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +2 -3
- data/src/core/lib/security/context/security_context.cc +12 -13
- data/src/core/lib/security/context/security_context.h +31 -8
- data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +3 -1
- data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -3
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +5 -5
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +3 -3
- data/src/core/lib/security/credentials/call_creds_util.cc +2 -1
- data/src/core/lib/security/credentials/channel_creds_registry.h +2 -2
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +5 -3
- data/src/core/lib/security/credentials/composite/composite_credentials.h +1 -1
- data/src/core/lib/security/credentials/credentials.cc +6 -6
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +4 -4
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +2 -2
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +9 -11
- data/src/core/lib/security/credentials/external/external_account_credentials.h +3 -3
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +2 -2
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +4 -4
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +1 -1
- data/src/core/lib/security/credentials/fake/fake_credentials.h +1 -1
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +3 -3
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +11 -11
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +1 -1
- data/src/core/lib/security/credentials/iam/iam_credentials.h +1 -1
- data/src/core/lib/security/credentials/jwt/json_token.cc +14 -15
- data/src/core/lib/security/credentials/jwt/json_token.h +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +6 -5
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +50 -54
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +1 -1
- data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +12 -11
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +4 -4
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -7
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +1 -3
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +15 -21
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +21 -30
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.cc +3 -5
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +14 -16
- data/src/core/lib/security/credentials/tls/tls_utils.cc +4 -4
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +1 -1
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -16
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +15 -12
- data/src/core/lib/security/security_connector/load_system_roots_supported.cc +6 -6
- data/src/core/lib/security/security_connector/load_system_roots_windows.cc +1 -1
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +8 -12
- data/src/core/lib/security/security_connector/security_connector.cc +1 -4
- data/src/core/lib/security/security_connector/security_connector.h +1 -3
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +17 -19
- data/src/core/lib/security/security_connector/ssl_utils.cc +19 -21
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +29 -40
- data/src/core/lib/security/transport/auth_filters.h +1 -0
- data/src/core/lib/security/transport/client_auth_filter.cc +7 -13
- data/src/core/lib/security/transport/server_auth_filter.cc +3 -8
- data/src/core/lib/security/util/json_util.h +1 -1
- data/src/core/lib/slice/slice.h +1 -1
- data/src/core/lib/slice/slice_refcount.h +2 -4
- data/src/core/lib/slice/slice_string_helpers.cc +1 -1
- data/src/core/lib/surface/api_trace.h +1 -3
- data/src/core/lib/surface/call.cc +64 -3738
- data/src/core/lib/surface/call.h +41 -143
- data/src/core/lib/surface/call_log_batch.cc +1 -1
- data/src/core/lib/surface/call_utils.cc +276 -0
- data/src/core/lib/surface/call_utils.h +449 -0
- data/src/core/lib/surface/channel.cc +8 -3
- data/src/core/lib/surface/channel.h +10 -7
- data/src/core/lib/surface/channel_create.cc +14 -6
- data/src/core/lib/surface/channel_create.h +3 -2
- data/src/core/lib/surface/channel_init.cc +21 -77
- data/src/core/lib/surface/channel_init.h +19 -97
- data/src/core/lib/surface/client_call.cc +419 -0
- data/src/core/lib/surface/client_call.h +180 -0
- data/src/core/lib/surface/completion_queue.cc +28 -33
- data/src/core/lib/surface/completion_queue.h +0 -8
- data/src/core/lib/surface/filter_stack_call.cc +1157 -0
- data/src/core/lib/surface/filter_stack_call.h +369 -0
- data/src/core/lib/surface/init.cc +7 -6
- data/src/core/lib/surface/lame_client.cc +1 -1
- data/src/core/lib/surface/legacy_channel.cc +40 -27
- data/src/core/lib/surface/legacy_channel.h +9 -18
- data/src/core/lib/surface/server_call.cc +222 -0
- data/src/core/lib/surface/server_call.h +167 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +3 -5
- data/src/core/lib/transport/bdp_estimator.h +2 -4
- data/src/core/lib/transport/call_arena_allocator.h +9 -7
- data/src/core/lib/transport/call_destination.h +76 -0
- data/src/core/lib/transport/call_filters.cc +28 -10
- data/src/core/lib/transport/call_filters.h +128 -22
- data/src/core/lib/transport/call_spine.cc +5 -6
- data/src/core/lib/transport/call_spine.h +159 -334
- data/src/core/lib/transport/connectivity_state.cc +8 -10
- data/src/core/lib/transport/connectivity_state.h +0 -2
- data/src/core/lib/transport/interception_chain.cc +155 -0
- data/src/core/lib/transport/interception_chain.h +236 -0
- data/src/core/lib/transport/metadata_batch.h +10 -1
- data/src/core/lib/transport/metadata_info.h +1 -1
- data/src/core/lib/transport/transport.cc +3 -6
- data/src/core/lib/transport/transport.h +43 -40
- data/src/core/load_balancing/child_policy_handler.cc +8 -8
- data/src/core/load_balancing/endpoint_list.cc +5 -5
- data/src/core/load_balancing/endpoint_list.h +1 -1
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +1 -0
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +1 -0
- data/src/core/load_balancing/grpclb/grpclb.cc +25 -29
- data/src/core/load_balancing/grpclb/grpclb_balancer_addresses.cc +1 -1
- data/src/core/load_balancing/grpclb/load_balancer_api.cc +3 -4
- data/src/core/load_balancing/health_check_client.cc +10 -13
- data/src/core/load_balancing/lb_policy.cc +5 -8
- data/src/core/load_balancing/lb_policy.h +19 -3
- data/src/core/load_balancing/lb_policy_factory.h +1 -1
- data/src/core/load_balancing/lb_policy_registry.cc +2 -3
- data/src/core/load_balancing/lb_policy_registry.h +1 -1
- data/src/core/load_balancing/oob_backend_metric.cc +2 -4
- data/src/core/load_balancing/outlier_detection/outlier_detection.cc +33 -35
- data/src/core/load_balancing/outlier_detection/outlier_detection.h +3 -3
- data/src/core/load_balancing/pick_first/pick_first.cc +65 -65
- data/src/core/load_balancing/priority/priority.cc +26 -28
- data/src/core/load_balancing/ring_hash/ring_hash.cc +11 -13
- data/src/core/load_balancing/ring_hash/ring_hash.h +3 -3
- data/src/core/load_balancing/rls/rls.cc +82 -82
- data/src/core/load_balancing/round_robin/round_robin.cc +17 -20
- data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +54 -43
- data/src/core/load_balancing/weighted_target/weighted_target.cc +21 -24
- data/src/core/load_balancing/xds/cds.cc +14 -16
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +16 -18
- data/src/core/load_balancing/xds/xds_cluster_manager.cc +15 -17
- data/src/core/load_balancing/xds/xds_override_host.cc +40 -41
- data/src/core/load_balancing/xds/xds_override_host.h +3 -3
- data/src/core/load_balancing/xds/xds_wrr_locality.cc +10 -12
- data/src/core/plugin_registry/grpc_plugin_registry.cc +5 -1
- data/src/core/resolver/binder/binder_resolver.cc +3 -2
- data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +3 -2
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +1 -1
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +7 -14
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -5
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/resolver/dns/dns_resolver_plugin.cc +6 -5
- data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +4 -9
- data/src/core/resolver/dns/event_engine/service_config_helper.cc +5 -5
- data/src/core/resolver/dns/native/dns_resolver.cc +8 -9
- data/src/core/resolver/endpoint_addresses.cc +1 -1
- data/src/core/resolver/fake/fake_resolver.cc +1 -1
- data/src/core/resolver/fake/fake_resolver.h +1 -1
- data/src/core/resolver/google_c2p/google_c2p_resolver.cc +13 -14
- data/src/core/resolver/polling_resolver.cc +30 -35
- data/src/core/resolver/resolver.cc +2 -6
- data/src/core/resolver/resolver.h +0 -2
- data/src/core/resolver/resolver_registry.cc +6 -8
- data/src/core/resolver/sockaddr/sockaddr_resolver.cc +3 -3
- data/src/core/resolver/xds/xds_dependency_manager.cc +22 -23
- data/src/core/resolver/xds/xds_resolver.cc +13 -15
- data/src/core/server/server.cc +269 -389
- data/src/core/server/server.h +37 -19
- data/src/core/server/server_call_tracer_filter.cc +7 -14
- data/src/core/server/server_config_selector.h +1 -1
- data/src/core/server/server_config_selector_filter.cc +3 -3
- data/src/core/server/server_interface.h +2 -0
- data/src/core/server/xds_channel_stack_modifier.cc +1 -1
- data/src/core/server/xds_channel_stack_modifier.h +1 -1
- data/src/core/server/xds_server_config_fetcher.cc +1 -4
- data/src/core/service_config/service_config.h +1 -1
- data/src/core/service_config/service_config_call_data.h +13 -11
- data/src/core/service_config/service_config_channel_arg_filter.cc +6 -4
- data/src/core/service_config/service_config_impl.cc +5 -5
- data/src/core/service_config/service_config_impl.h +1 -1
- data/src/core/service_config/service_config_parser.cc +3 -6
- data/src/core/service_config/service_config_parser.h +1 -1
- data/src/core/{lib/channel → telemetry}/call_tracer.cc +20 -30
- data/src/core/{lib/channel → telemetry}/call_tracer.h +32 -9
- data/src/core/{lib/debug → telemetry}/histogram_view.cc +1 -1
- data/src/core/{lib/debug → telemetry}/histogram_view.h +3 -3
- data/src/core/telemetry/metrics.cc +178 -0
- data/src/core/telemetry/metrics.h +562 -0
- data/src/core/{lib/debug → telemetry}/stats.cc +1 -1
- data/src/core/{lib/debug → telemetry}/stats.h +5 -5
- data/src/core/{lib/debug → telemetry}/stats_data.cc +1 -1
- data/src/core/{lib/debug → telemetry}/stats_data.h +4 -4
- data/src/core/{lib/channel → telemetry}/tcp_tracer.h +3 -3
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +12 -13
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +25 -27
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +32 -33
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +5 -4
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +5 -3
- 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 +4 -3
- data/src/core/tsi/fake_transport_security.cc +14 -17
- data/src/core/tsi/local_transport_security.cc +6 -5
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +4 -4
- data/src/core/tsi/ssl_transport_security.cc +76 -81
- data/src/core/tsi/ssl_transport_security_utils.cc +74 -18
- data/src/core/tsi/ssl_transport_security_utils.h +11 -0
- data/src/core/tsi/transport_security.cc +0 -4
- data/src/core/tsi/transport_security.h +0 -2
- data/src/core/tsi/transport_security_interface.h +0 -4
- data/src/core/{lib/gpr → util}/alloc.h +3 -3
- data/src/core/{lib/gpr → util}/android/log.cc +0 -19
- data/src/core/{lib/gpr → util}/atm.cc +1 -1
- data/src/core/{ext/gcp/metadata_query.cc → util/gcp_metadata_query.cc} +25 -26
- data/src/core/{ext/gcp/metadata_query.h → util/gcp_metadata_query.h} +11 -11
- data/src/core/{lib/http → util/http_client}/format_request.cc +4 -3
- data/src/core/{lib/http → util/http_client}/format_request.h +6 -5
- data/src/core/{lib/http → util/http_client}/httpcli.cc +9 -10
- data/src/core/{lib/http → util/http_client}/httpcli.h +6 -5
- data/src/core/{lib/http → util/http_client}/httpcli_security_connector.cc +9 -9
- data/src/core/{lib/http → util/http_client}/httpcli_ssl_credentials.h +5 -4
- data/src/core/{lib/http → util/http_client}/parser.cc +4 -5
- data/src/core/{lib/http → util/http_client}/parser.h +5 -6
- data/src/core/{lib → util}/json/json.h +5 -4
- data/src/core/{lib → util}/json/json_args.h +5 -5
- data/src/core/{lib → util}/json/json_channel_args.h +6 -6
- data/src/core/{lib → util}/json/json_object_loader.cc +3 -2
- data/src/core/{lib → util}/json/json_object_loader.h +7 -7
- data/src/core/{lib → util}/json/json_reader.cc +3 -2
- data/src/core/{lib → util}/json/json_reader.h +6 -6
- data/src/core/{lib → util}/json/json_util.cc +4 -4
- data/src/core/{lib → util}/json/json_util.h +6 -6
- data/src/core/{lib → util}/json/json_writer.cc +3 -3
- data/src/core/{lib → util}/json/json_writer.h +6 -6
- data/src/core/{lib/gpr → util}/linux/log.cc +0 -45
- data/src/core/util/log.cc +165 -0
- data/src/core/{lib/gpr → util}/msys/tmpfile.cc +2 -2
- data/src/core/{lib/gpr → util}/posix/cpu.cc +1 -1
- data/src/core/{lib/gpr → util}/posix/log.cc +0 -42
- data/src/core/{lib/gpr → util}/posix/time.cc +1 -1
- data/src/core/{lib/gpr → util}/posix/tmpfile.cc +2 -2
- data/src/core/{lib/gpr → util}/spinlock.h +3 -3
- data/src/core/{lib/gpr → util}/string.cc +2 -2
- data/src/core/{lib/gpr → util}/string.h +3 -3
- data/src/core/{lib/gpr → util}/time_precise.cc +1 -1
- data/src/core/{lib/gpr → util}/time_precise.h +3 -3
- data/src/core/{lib/gpr → util}/tmpfile.h +3 -3
- data/src/core/{lib/gpr → util}/useful.h +3 -3
- data/src/core/{lib/gpr → util}/windows/log.cc +1 -44
- data/src/core/{lib/gpr → util}/windows/string.cc +1 -1
- data/src/core/{lib/gpr → util}/windows/string_util.cc +1 -1
- data/src/core/{lib/gpr → util}/windows/time.cc +1 -1
- data/src/core/{lib/gpr → util}/windows/tmpfile.cc +1 -1
- data/src/core/xds/grpc/certificate_provider_store.cc +3 -3
- data/src/core/xds/grpc/certificate_provider_store.h +4 -4
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +3 -3
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +3 -3
- data/src/core/xds/grpc/xds_audit_logger_registry.h +1 -1
- data/src/core/xds/grpc/xds_bootstrap_grpc.cc +5 -5
- data/src/core/xds/grpc/xds_bootstrap_grpc.h +3 -3
- data/src/core/xds/grpc/xds_certificate_provider.h +1 -1
- data/src/core/xds/grpc/xds_client_grpc.cc +27 -23
- data/src/core/xds/grpc/xds_client_grpc.h +2 -2
- data/src/core/xds/grpc/xds_cluster.cc +4 -5
- data/src/core/xds/grpc/xds_cluster.h +1 -1
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +2 -2
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.h +1 -1
- data/src/core/xds/grpc/xds_common_types.cc +1 -1
- data/src/core/xds/grpc/xds_common_types.h +1 -1
- data/src/core/xds/grpc/xds_endpoint.cc +4 -5
- data/src/core/xds/grpc/xds_http_fault_filter.cc +2 -2
- data/src/core/xds/grpc/xds_http_filters.h +2 -2
- data/src/core/xds/grpc/xds_http_rbac_filter.cc +3 -3
- data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +2 -2
- data/src/core/xds/grpc/xds_lb_policy_registry.h +1 -1
- data/src/core/xds/grpc/xds_listener.cc +4 -6
- data/src/core/xds/grpc/xds_route_config.cc +7 -8
- data/src/core/xds/grpc/xds_transport_grpc.cc +2 -2
- data/src/core/xds/grpc/xds_transport_grpc.h +1 -1
- data/src/core/xds/xds_client/xds_api.cc +5 -9
- data/src/core/xds/xds_client/xds_bootstrap.cc +1 -1
- data/src/core/xds/xds_client/xds_bootstrap.h +1 -1
- data/src/core/xds/xds_client/xds_client.cc +39 -45
- data/src/core/xds/xds_client/xds_client.h +0 -3
- data/src/core/xds/xds_client/xds_client_stats.cc +6 -6
- data/src/core/xds/xds_client/xds_client_stats.h +2 -2
- data/src/ruby/bin/math_pb.rb +1 -22
- data/src/ruby/ext/grpc/rb_call.c +8 -1
- data/src/ruby/ext/grpc/rb_completion_queue.c +15 -32
- data/src/ruby/ext/grpc/rb_completion_queue.h +7 -1
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -2
- data/src/ruby/ext/grpc/rb_server.c +39 -22
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/v1/health_pb.rb +1 -22
- data/src/ruby/pb/grpc/testing/duplicate/echo_duplicate_services_pb.rb +5 -5
- data/src/ruby/pb/grpc/testing/metrics_pb.rb +10 -19
- data/src/ruby/pb/grpc/testing/metrics_services_pb.rb +5 -5
- data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +1 -22
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +1 -22
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -22
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +12 -12
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +66 -41
- data/third_party/boringssl-with-bazel/src/crypto/dilithium/dilithium.c +1497 -0
- data/third_party/boringssl-with-bazel/src/crypto/dilithium/internal.h +58 -0
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +10 -3
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +45 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +33 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c +3 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +9 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +6 -0
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.c +49 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +7 -17
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +8 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +3 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/experimental/dilithium.h +125 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +0 -23
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +4 -10
- metadata +103 -93
- data/src/core/ext/transport/chttp2/transport/http_trace.cc +0 -19
- data/src/core/ext/transport/chttp2/transport/http_trace.h +0 -24
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -23
- data/src/core/handshaker/security/tsi_error.cc +0 -31
- data/src/core/handshaker/security/tsi_error.h +0 -30
- data/src/core/lib/channel/channel_stack_trace.cc +0 -19
- data/src/core/lib/channel/channel_stack_trace.h +0 -24
- data/src/core/lib/channel/context.h +0 -105
- data/src/core/lib/channel/metrics.cc +0 -334
- data/src/core/lib/channel/metrics.h +0 -365
- data/src/core/lib/event_engine/trace.cc +0 -25
- data/src/core/lib/gpr/log.cc +0 -166
- data/src/core/lib/iomgr/ev_windows.cc +0 -30
- data/src/core/lib/promise/trace.cc +0 -20
- data/src/core/lib/promise/trace.h +0 -24
- data/src/core/lib/resource_quota/trace.cc +0 -19
- data/src/core/lib/resource_quota/trace.h +0 -24
- data/src/core/lib/slice/slice_refcount.cc +0 -20
- data/src/core/lib/surface/api_trace.cc +0 -25
- data/src/core/lib/surface/call_trace.h +0 -24
- data/src/core/lib/surface/wait_for_cq_end_op.cc +0 -75
- data/src/core/lib/surface/wait_for_cq_end_op.h +0 -72
- data/src/core/lib/transport/batch_builder.cc +0 -172
- data/src/core/lib/transport/batch_builder.h +0 -474
- data/src/core/resolver/xds/xds_resolver_trace.cc +0 -25
- data/src/core/resolver/xds/xds_resolver_trace.h +0 -30
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -122
- /data/src/core/{lib/gpr → util}/alloc.cc +0 -0
- /data/src/core/{lib/gpr → util}/iphone/cpu.cc +0 -0
- /data/src/core/{lib/gpr → util}/linux/cpu.cc +0 -0
- /data/src/core/{lib/gpr → util}/posix/string.cc +0 -0
- /data/src/core/{lib/gpr → util}/posix/sync.cc +0 -0
- /data/src/core/{lib/gpr → util}/sync.cc +0 -0
- /data/src/core/{lib/gpr → util}/sync_abseil.cc +0 -0
- /data/src/core/{lib/gpr → util}/time.cc +0 -0
- /data/src/core/{lib/gpr → util}/windows/cpu.cc +0 -0
- /data/src/core/{lib/gpr → util}/windows/sync.cc +0 -0
@@ -27,6 +27,7 @@
|
|
27
27
|
#include <utility>
|
28
28
|
|
29
29
|
#include "absl/log/check.h"
|
30
|
+
#include "absl/log/log.h"
|
30
31
|
#include "absl/status/statusor.h"
|
31
32
|
#include "absl/strings/cord.h"
|
32
33
|
#include "absl/strings/str_cat.h"
|
@@ -40,6 +41,7 @@
|
|
40
41
|
|
41
42
|
#include "src/core/channelz/channel_trace.h"
|
42
43
|
#include "src/core/channelz/channelz.h"
|
44
|
+
#include "src/core/client_channel/client_channel_internal.h"
|
43
45
|
#include "src/core/client_channel/subchannel_pool_interface.h"
|
44
46
|
#include "src/core/handshaker/proxy_mapper_registry.h"
|
45
47
|
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
@@ -48,12 +50,11 @@
|
|
48
50
|
#include "src/core/lib/channel/channel_stack.h"
|
49
51
|
#include "src/core/lib/channel/channel_stack_builder_impl.h"
|
50
52
|
#include "src/core/lib/config/core_configuration.h"
|
51
|
-
#include "src/core/lib/debug/stats.h"
|
52
|
-
#include "src/core/lib/debug/stats_data.h"
|
53
53
|
#include "src/core/lib/debug/trace.h"
|
54
|
-
#include "src/core/lib/
|
55
|
-
#include "src/core/lib/gpr/useful.h"
|
54
|
+
#include "src/core/lib/experiments/experiments.h"
|
56
55
|
#include "src/core/lib/gprpp/debug_location.h"
|
56
|
+
#include "src/core/lib/gprpp/orphanable.h"
|
57
|
+
#include "src/core/lib/gprpp/ref_counted.h"
|
57
58
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
58
59
|
#include "src/core/lib/gprpp/status_helper.h"
|
59
60
|
#include "src/core/lib/gprpp/sync.h"
|
@@ -67,7 +68,12 @@
|
|
67
68
|
#include "src/core/lib/surface/init_internally.h"
|
68
69
|
#include "src/core/lib/transport/connectivity_state.h"
|
69
70
|
#include "src/core/lib/transport/error_utils.h"
|
71
|
+
#include "src/core/lib/transport/interception_chain.h"
|
70
72
|
#include "src/core/lib/transport/transport.h"
|
73
|
+
#include "src/core/telemetry/stats.h"
|
74
|
+
#include "src/core/telemetry/stats_data.h"
|
75
|
+
#include "src/core/util/alloc.h"
|
76
|
+
#include "src/core/util/useful.h"
|
71
77
|
|
72
78
|
// Backoff parameters.
|
73
79
|
#define GRPC_SUBCHANNEL_INITIAL_CONNECT_BACKOFF_SECONDS 1
|
@@ -88,83 +94,138 @@ namespace grpc_core {
|
|
88
94
|
|
89
95
|
using ::grpc_event_engine::experimental::EventEngine;
|
90
96
|
|
91
|
-
TraceFlag grpc_trace_subchannel(false, "subchannel");
|
92
|
-
DebugOnlyTraceFlag grpc_trace_subchannel_refcount(false, "subchannel_refcount");
|
93
|
-
|
94
97
|
//
|
95
98
|
// ConnectedSubchannel
|
96
99
|
//
|
97
100
|
|
98
101
|
ConnectedSubchannel::ConnectedSubchannel(
|
99
|
-
|
102
|
+
const ChannelArgs& args,
|
100
103
|
RefCountedPtr<channelz::SubchannelNode> channelz_subchannel)
|
101
104
|
: RefCounted<ConnectedSubchannel>(
|
102
|
-
GRPC_TRACE_FLAG_ENABLED(
|
103
|
-
|
104
|
-
: nullptr),
|
105
|
-
channel_stack_(channel_stack),
|
105
|
+
GRPC_TRACE_FLAG_ENABLED(subchannel_refcount) ? "ConnectedSubchannel"
|
106
|
+
: nullptr),
|
106
107
|
args_(args),
|
107
108
|
channelz_subchannel_(std::move(channelz_subchannel)) {}
|
108
109
|
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
}
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
110
|
+
//
|
111
|
+
// LegacyConnectedSubchannel
|
112
|
+
//
|
113
|
+
|
114
|
+
class LegacyConnectedSubchannel : public ConnectedSubchannel {
|
115
|
+
public:
|
116
|
+
LegacyConnectedSubchannel(
|
117
|
+
RefCountedPtr<grpc_channel_stack> channel_stack, const ChannelArgs& args,
|
118
|
+
RefCountedPtr<channelz::SubchannelNode> channelz_subchannel)
|
119
|
+
: ConnectedSubchannel(args, std::move(channelz_subchannel)),
|
120
|
+
channel_stack_(std::move(channel_stack)) {}
|
121
|
+
|
122
|
+
~LegacyConnectedSubchannel() override {
|
123
|
+
channel_stack_.reset(DEBUG_LOCATION, "ConnectedSubchannel");
|
124
|
+
}
|
125
|
+
|
126
|
+
void StartWatch(
|
127
|
+
grpc_pollset_set* interested_parties,
|
128
|
+
OrphanablePtr<ConnectivityStateWatcherInterface> watcher) override {
|
129
|
+
grpc_transport_op* op = grpc_make_transport_op(nullptr);
|
130
|
+
op->start_connectivity_watch = std::move(watcher);
|
131
|
+
op->start_connectivity_watch_state = GRPC_CHANNEL_READY;
|
132
|
+
op->bind_pollset_set = interested_parties;
|
133
|
+
grpc_channel_element* elem =
|
134
|
+
grpc_channel_stack_element(channel_stack_.get(), 0);
|
135
|
+
elem->filter->start_transport_op(elem, op);
|
136
|
+
}
|
137
|
+
|
138
|
+
void Ping(absl::AnyInvocable<void(absl::Status)>) override {
|
139
|
+
Crash("call v3 ping method called in legacy impl");
|
140
|
+
}
|
141
|
+
|
142
|
+
RefCountedPtr<UnstartedCallDestination> unstarted_call_destination()
|
143
|
+
const override {
|
144
|
+
Crash("call v3 unstarted_call_destination method called in legacy impl");
|
145
|
+
}
|
146
|
+
|
147
|
+
grpc_channel_stack* channel_stack() const override {
|
148
|
+
return channel_stack_.get();
|
149
|
+
}
|
150
|
+
|
151
|
+
size_t GetInitialCallSizeEstimate() const override {
|
152
|
+
return GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(SubchannelCall)) +
|
153
|
+
channel_stack_->call_stack_size;
|
154
|
+
}
|
155
|
+
|
156
|
+
void Ping(grpc_closure* on_initiate, grpc_closure* on_ack) override {
|
157
|
+
grpc_transport_op* op = grpc_make_transport_op(nullptr);
|
158
|
+
op->send_ping.on_initiate = on_initiate;
|
159
|
+
op->send_ping.on_ack = on_ack;
|
160
|
+
grpc_channel_element* elem =
|
161
|
+
grpc_channel_stack_element(channel_stack_.get(), 0);
|
162
|
+
elem->filter->start_transport_op(elem, op);
|
163
|
+
}
|
164
|
+
|
165
|
+
private:
|
166
|
+
RefCountedPtr<grpc_channel_stack> channel_stack_;
|
167
|
+
};
|
168
|
+
|
169
|
+
//
|
170
|
+
// NewConnectedSubchannel
|
171
|
+
//
|
172
|
+
|
173
|
+
class NewConnectedSubchannel : public ConnectedSubchannel {
|
174
|
+
public:
|
175
|
+
class TransportCallDestination final : public CallDestination {
|
176
|
+
public:
|
177
|
+
explicit TransportCallDestination(OrphanablePtr<ClientTransport> transport)
|
178
|
+
: transport_(std::move(transport)) {}
|
179
|
+
|
180
|
+
ClientTransport* transport() { return transport_.get(); }
|
181
|
+
|
182
|
+
void HandleCall(CallHandler handler) override {
|
183
|
+
transport_->StartCall(std::move(handler));
|
184
|
+
}
|
185
|
+
|
186
|
+
void Orphaned() override { transport_.reset(); }
|
187
|
+
|
188
|
+
private:
|
189
|
+
OrphanablePtr<ClientTransport> transport_;
|
190
|
+
};
|
191
|
+
|
192
|
+
NewConnectedSubchannel(
|
193
|
+
RefCountedPtr<UnstartedCallDestination> call_destination,
|
194
|
+
RefCountedPtr<TransportCallDestination> transport,
|
195
|
+
const ChannelArgs& args,
|
196
|
+
RefCountedPtr<channelz::SubchannelNode> channelz_subchannel)
|
197
|
+
: ConnectedSubchannel(args, std::move(channelz_subchannel)),
|
198
|
+
call_destination_(std::move(call_destination)),
|
199
|
+
transport_(std::move(transport)) {}
|
200
|
+
|
201
|
+
void StartWatch(
|
202
|
+
grpc_pollset_set*,
|
203
|
+
OrphanablePtr<ConnectivityStateWatcherInterface> watcher) override {
|
204
|
+
transport_->transport()->StartConnectivityWatch(std::move(watcher));
|
205
|
+
}
|
206
|
+
|
207
|
+
void Ping(absl::AnyInvocable<void(absl::Status)>) override {
|
208
|
+
// TODO(ctiller): add new transport API for this in v3 stack
|
209
|
+
Crash("not implemented");
|
210
|
+
}
|
211
|
+
|
212
|
+
RefCountedPtr<UnstartedCallDestination> unstarted_call_destination()
|
213
|
+
const override {
|
214
|
+
return call_destination_;
|
215
|
+
}
|
216
|
+
|
217
|
+
grpc_channel_stack* channel_stack() const override { return nullptr; }
|
218
|
+
|
219
|
+
size_t GetInitialCallSizeEstimate() const override { return 0; }
|
220
|
+
|
221
|
+
void Ping(grpc_closure*, grpc_closure*) override {
|
222
|
+
Crash("legacy ping method called in call v3 impl");
|
223
|
+
}
|
224
|
+
|
225
|
+
private:
|
226
|
+
RefCountedPtr<UnstartedCallDestination> call_destination_;
|
227
|
+
RefCountedPtr<TransportCallDestination> transport_;
|
228
|
+
};
|
168
229
|
|
169
230
|
//
|
170
231
|
// SubchannelCall
|
@@ -186,7 +247,6 @@ SubchannelCall::SubchannelCall(Args args, grpc_error_handle* error)
|
|
186
247
|
const grpc_call_element_args call_args = {
|
187
248
|
callstk, // call_stack
|
188
249
|
nullptr, // server_transport_data
|
189
|
-
args.context, // context
|
190
250
|
args.path.c_slice(), // path
|
191
251
|
args.start_time, // start_time
|
192
252
|
args.deadline, // deadline
|
@@ -196,7 +256,7 @@ SubchannelCall::SubchannelCall(Args args, grpc_error_handle* error)
|
|
196
256
|
*error = grpc_call_stack_init(connected_subchannel_->channel_stack(), 1,
|
197
257
|
SubchannelCall::Destroy, this, &call_args);
|
198
258
|
if (GPR_UNLIKELY(!error->ok())) {
|
199
|
-
|
259
|
+
LOG(ERROR) << "error: " << StatusToString(*error);
|
200
260
|
return;
|
201
261
|
}
|
202
262
|
grpc_call_stack_set_pollset_or_pollset_set(callstk, args.pollent);
|
@@ -254,8 +314,8 @@ void SubchannelCall::Destroy(void* arg, grpc_error_handle /*error*/) {
|
|
254
314
|
// Destroy the subchannel call.
|
255
315
|
self->~SubchannelCall();
|
256
316
|
// Destroy the call stack. This should be after destroying the subchannel
|
257
|
-
// call, because call->after_call_stack_destroy(), if not null, will free
|
258
|
-
// call arena.
|
317
|
+
// call, because call->after_call_stack_destroy(), if not null, will free
|
318
|
+
// the call arena.
|
259
319
|
grpc_call_stack_destroy(SUBCHANNEL_CALL_TO_CALL_STACK(self), nullptr,
|
260
320
|
after_call_stack_destroy);
|
261
321
|
// Automatically reset connected_subchannel. This should be after destroying
|
@@ -357,7 +417,7 @@ class Subchannel::ConnectedSubchannelStateWatcher final
|
|
357
417
|
if (c->connected_subchannel_ == nullptr) return;
|
358
418
|
if (new_state == GRPC_CHANNEL_TRANSIENT_FAILURE ||
|
359
419
|
new_state == GRPC_CHANNEL_SHUTDOWN) {
|
360
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
420
|
+
if (GRPC_TRACE_FLAG_ENABLED(subchannel)) {
|
361
421
|
gpr_log(GPR_INFO,
|
362
422
|
"subchannel %p %s: Connected subchannel %p reports %s: %s", c,
|
363
423
|
c->key_.ToString().c_str(), c->connected_subchannel_.get(),
|
@@ -456,9 +516,9 @@ BackOff::Options ParseArgsForBackoffValues(const ChannelArgs& args,
|
|
456
516
|
Subchannel::Subchannel(SubchannelKey key,
|
457
517
|
OrphanablePtr<SubchannelConnector> connector,
|
458
518
|
const ChannelArgs& args)
|
459
|
-
: DualRefCounted<Subchannel>(
|
460
|
-
|
461
|
-
|
519
|
+
: DualRefCounted<Subchannel>(GRPC_TRACE_FLAG_ENABLED(subchannel_refcount)
|
520
|
+
? "Subchannel"
|
521
|
+
: nullptr),
|
462
522
|
key_(std::move(key)),
|
463
523
|
args_(args),
|
464
524
|
pollset_set_(grpc_pollset_set_create()),
|
@@ -473,8 +533,8 @@ Subchannel::Subchannel(SubchannelKey key,
|
|
473
533
|
// result the subchannel destruction happens asynchronously to channel
|
474
534
|
// destruction. If the last channel destruction triggers a grpc_shutdown
|
475
535
|
// before the last subchannel destruction, then there maybe race conditions
|
476
|
-
// triggering segmentation faults. To prevent this issue, we call a
|
477
|
-
// here and a grpc_shutdown in the subchannel destructor.
|
536
|
+
// triggering segmentation faults. To prevent this issue, we call a
|
537
|
+
// grpc_init here and a grpc_shutdown in the subchannel destructor.
|
478
538
|
InitInternally();
|
479
539
|
global_stats().IncrementClientSubchannelsCreated();
|
480
540
|
GRPC_CLOSURE_INIT(&on_connecting_finished_, OnConnectingFinished, this,
|
@@ -542,7 +602,7 @@ void Subchannel::ThrottleKeepaliveTime(int new_keepalive_time) {
|
|
542
602
|
// Only update the value if the new keepalive time is larger.
|
543
603
|
if (new_keepalive_time > keepalive_time_) {
|
544
604
|
keepalive_time_ = new_keepalive_time;
|
545
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
605
|
+
if (GRPC_TRACE_FLAG_ENABLED(subchannel)) {
|
546
606
|
gpr_log(GPR_INFO, "subchannel %p %s: throttling keepalive time to %d",
|
547
607
|
this, key_.ToString().c_str(), new_keepalive_time);
|
548
608
|
}
|
@@ -586,7 +646,8 @@ void Subchannel::CancelConnectivityStateWatch(
|
|
586
646
|
watcher_list_.RemoveWatcherLocked(watcher);
|
587
647
|
}
|
588
648
|
// Drain any connectivity state notifications after releasing the mutex.
|
589
|
-
// (Shouldn't actually be necessary in this case, but better safe than
|
649
|
+
// (Shouldn't actually be necessary in this case, but better safe than
|
650
|
+
// sorry.)
|
590
651
|
work_serializer_.DrainQueue();
|
591
652
|
}
|
592
653
|
|
@@ -757,11 +818,11 @@ void Subchannel::OnConnectingFinishedLocked(grpc_error_handle error) {
|
|
757
818
|
ExecCtx exec_ctx;
|
758
819
|
self->OnRetryTimer();
|
759
820
|
// Subchannel deletion might require an active ExecCtx. So if
|
760
|
-
// self.reset() is not called here, the WeakRefCountedPtr
|
761
|
-
// may run after the ExecCtx declared in the callback
|
762
|
-
// Since subchannel may get destroyed when the
|
763
|
-
// destructor runs, it may not have an active
|
764
|
-
// to crashes.
|
821
|
+
// self.reset() is not called here, the WeakRefCountedPtr
|
822
|
+
// destructor may run after the ExecCtx declared in the callback
|
823
|
+
// is destroyed. Since subchannel may get destroyed when the
|
824
|
+
// WeakRefCountedPtr destructor runs, it may not have an active
|
825
|
+
// ExecCtx - thus leading to crashes.
|
765
826
|
self.reset();
|
766
827
|
}
|
767
828
|
});
|
@@ -769,37 +830,59 @@ void Subchannel::OnConnectingFinishedLocked(grpc_error_handle error) {
|
|
769
830
|
}
|
770
831
|
|
771
832
|
bool Subchannel::PublishTransportLocked() {
|
772
|
-
|
773
|
-
|
774
|
-
|
775
|
-
|
776
|
-
|
777
|
-
|
778
|
-
|
779
|
-
|
780
|
-
|
781
|
-
|
782
|
-
|
783
|
-
|
784
|
-
|
785
|
-
|
786
|
-
|
787
|
-
|
788
|
-
|
833
|
+
auto socket_node = std::move(connecting_result_.socket_node);
|
834
|
+
if (connecting_result_.transport->filter_stack_transport() != nullptr) {
|
835
|
+
// Construct channel stack.
|
836
|
+
// Builder takes ownership of transport.
|
837
|
+
ChannelStackBuilderImpl builder(
|
838
|
+
"subchannel", GRPC_CLIENT_SUBCHANNEL,
|
839
|
+
connecting_result_.channel_args.SetObject(
|
840
|
+
std::exchange(connecting_result_.transport, nullptr)));
|
841
|
+
if (!CoreConfiguration::Get().channel_init().CreateStack(&builder)) {
|
842
|
+
return false;
|
843
|
+
}
|
844
|
+
absl::StatusOr<RefCountedPtr<grpc_channel_stack>> stack = builder.Build();
|
845
|
+
if (!stack.ok()) {
|
846
|
+
connecting_result_.Reset();
|
847
|
+
gpr_log(GPR_ERROR,
|
848
|
+
"subchannel %p %s: error initializing subchannel stack: %s", this,
|
849
|
+
key_.ToString().c_str(), stack.status().ToString().c_str());
|
850
|
+
return false;
|
851
|
+
}
|
852
|
+
connected_subchannel_ = MakeRefCounted<LegacyConnectedSubchannel>(
|
853
|
+
std::move(*stack), args_, channelz_node_);
|
854
|
+
} else {
|
855
|
+
OrphanablePtr<ClientTransport> transport(
|
856
|
+
std::exchange(connecting_result_.transport, nullptr)
|
857
|
+
->client_transport());
|
858
|
+
InterceptionChainBuilder builder(
|
859
|
+
connecting_result_.channel_args.SetObject(transport.get()));
|
860
|
+
CoreConfiguration::Get().channel_init().AddToInterceptionChainBuilder(
|
861
|
+
GRPC_CLIENT_SUBCHANNEL, builder);
|
862
|
+
auto transport_destination =
|
863
|
+
MakeRefCounted<NewConnectedSubchannel::TransportCallDestination>(
|
864
|
+
std::move(transport));
|
865
|
+
auto call_destination = builder.Build(transport_destination);
|
866
|
+
if (!call_destination.ok()) {
|
867
|
+
connecting_result_.Reset();
|
868
|
+
gpr_log(GPR_ERROR,
|
869
|
+
"subchannel %p %s: error initializing subchannel stack: %s", this,
|
870
|
+
key_.ToString().c_str(),
|
871
|
+
call_destination.status().ToString().c_str());
|
872
|
+
return false;
|
873
|
+
}
|
874
|
+
connected_subchannel_ = MakeRefCounted<NewConnectedSubchannel>(
|
875
|
+
std::move(*call_destination), std::move(transport_destination), args_,
|
876
|
+
channelz_node_);
|
789
877
|
}
|
790
|
-
RefCountedPtr<channelz::SocketNode> socket =
|
791
|
-
std::move(connecting_result_.socket_node);
|
792
878
|
connecting_result_.Reset();
|
793
|
-
if (shutdown_) return false;
|
794
879
|
// Publish.
|
795
|
-
|
796
|
-
new ConnectedSubchannel(stk->release(), args_, channelz_node_));
|
797
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_subchannel)) {
|
880
|
+
if (GRPC_TRACE_FLAG_ENABLED(subchannel)) {
|
798
881
|
gpr_log(GPR_INFO, "subchannel %p %s: new connected subchannel at %p", this,
|
799
882
|
key_.ToString().c_str(), connected_subchannel_.get());
|
800
883
|
}
|
801
884
|
if (channelz_node_ != nullptr) {
|
802
|
-
channelz_node_->SetChildSocket(std::move(
|
885
|
+
channelz_node_->SetChildSocket(std::move(socket_node));
|
803
886
|
}
|
804
887
|
// Start watching connected subchannel.
|
805
888
|
connected_subchannel_->StartWatch(
|
@@ -810,4 +893,29 @@ bool Subchannel::PublishTransportLocked() {
|
|
810
893
|
return true;
|
811
894
|
}
|
812
895
|
|
896
|
+
ChannelArgs Subchannel::MakeSubchannelArgs(
|
897
|
+
const ChannelArgs& channel_args, const ChannelArgs& address_args,
|
898
|
+
const RefCountedPtr<SubchannelPoolInterface>& subchannel_pool,
|
899
|
+
const std::string& channel_default_authority) {
|
900
|
+
// Note that we start with the channel-level args and then apply the
|
901
|
+
// per-address args, so that if a value is present in both, the one
|
902
|
+
// in the channel-level args is used. This is particularly important
|
903
|
+
// for the GRPC_ARG_DEFAULT_AUTHORITY arg, which we want to allow
|
904
|
+
// resolvers to set on a per-address basis only if the application
|
905
|
+
// did not explicitly set it at the channel level.
|
906
|
+
return channel_args.UnionWith(address_args)
|
907
|
+
.SetObject(subchannel_pool)
|
908
|
+
// If we haven't already set the default authority arg (i.e., it
|
909
|
+
// was not explicitly set by the application nor overridden by
|
910
|
+
// the resolver), add it from the channel's default.
|
911
|
+
.SetIfUnset(GRPC_ARG_DEFAULT_AUTHORITY, channel_default_authority)
|
912
|
+
// Remove channel args that should not affect subchannel
|
913
|
+
// uniqueness.
|
914
|
+
.Remove(GRPC_ARG_HEALTH_CHECK_SERVICE_NAME)
|
915
|
+
.Remove(GRPC_ARG_INHIBIT_HEALTH_CHECKING)
|
916
|
+
.Remove(GRPC_ARG_CHANNELZ_CHANNEL_NODE)
|
917
|
+
// Remove all keys with the no-subchannel prefix.
|
918
|
+
.RemoveAllKeysWithPrefix(GRPC_ARG_NO_SUBCHANNEL_PREFIX);
|
919
|
+
}
|
920
|
+
|
813
921
|
} // namespace grpc_core
|
@@ -36,8 +36,6 @@
|
|
36
36
|
#include "src/core/lib/backoff/backoff.h"
|
37
37
|
#include "src/core/lib/channel/channel_args.h"
|
38
38
|
#include "src/core/lib/channel/channel_fwd.h"
|
39
|
-
#include "src/core/lib/channel/context.h"
|
40
|
-
#include "src/core/lib/gpr/time_precise.h"
|
41
39
|
#include "src/core/lib/gprpp/debug_location.h"
|
42
40
|
#include "src/core/lib/gprpp/dual_ref_counted.h"
|
43
41
|
#include "src/core/lib/gprpp/orphanable.h"
|
@@ -59,35 +57,39 @@
|
|
59
57
|
#include "src/core/lib/transport/connectivity_state.h"
|
60
58
|
#include "src/core/lib/transport/metadata_batch.h"
|
61
59
|
#include "src/core/lib/transport/transport.h"
|
60
|
+
#include "src/core/util/time_precise.h"
|
62
61
|
|
63
62
|
namespace grpc_core {
|
64
63
|
|
65
64
|
class SubchannelCall;
|
66
65
|
|
67
|
-
class ConnectedSubchannel
|
66
|
+
class ConnectedSubchannel : public RefCounted<ConnectedSubchannel> {
|
68
67
|
public:
|
69
|
-
ConnectedSubchannel(
|
70
|
-
grpc_channel_stack* channel_stack, const ChannelArgs& args,
|
71
|
-
RefCountedPtr<channelz::SubchannelNode> channelz_subchannel);
|
72
|
-
~ConnectedSubchannel() override;
|
73
|
-
|
74
|
-
void StartWatch(grpc_pollset_set* interested_parties,
|
75
|
-
OrphanablePtr<ConnectivityStateWatcherInterface> watcher);
|
76
|
-
|
77
|
-
void Ping(grpc_closure* on_initiate, grpc_closure* on_ack);
|
78
|
-
|
79
|
-
grpc_channel_stack* channel_stack() const { return channel_stack_; }
|
80
68
|
const ChannelArgs& args() const { return args_; }
|
81
69
|
channelz::SubchannelNode* channelz_subchannel() const {
|
82
70
|
return channelz_subchannel_.get();
|
83
71
|
}
|
84
72
|
|
85
|
-
|
73
|
+
virtual void StartWatch(
|
74
|
+
grpc_pollset_set* interested_parties,
|
75
|
+
OrphanablePtr<ConnectivityStateWatcherInterface> watcher) = 0;
|
76
|
+
|
77
|
+
// Methods for v3 stack.
|
78
|
+
virtual void Ping(absl::AnyInvocable<void(absl::Status)> on_ack) = 0;
|
79
|
+
virtual RefCountedPtr<UnstartedCallDestination> unstarted_call_destination()
|
80
|
+
const = 0;
|
86
81
|
|
87
|
-
|
82
|
+
// Methods for legacy stack.
|
83
|
+
virtual grpc_channel_stack* channel_stack() const = 0;
|
84
|
+
virtual size_t GetInitialCallSizeEstimate() const = 0;
|
85
|
+
virtual void Ping(grpc_closure* on_initiate, grpc_closure* on_ack) = 0;
|
86
|
+
|
87
|
+
protected:
|
88
|
+
ConnectedSubchannel(
|
89
|
+
const ChannelArgs& args,
|
90
|
+
RefCountedPtr<channelz::SubchannelNode> channelz_subchannel);
|
88
91
|
|
89
92
|
private:
|
90
|
-
grpc_channel_stack* channel_stack_;
|
91
93
|
ChannelArgs args_;
|
92
94
|
// ref counted pointer to the channelz node in this connected subchannel's
|
93
95
|
// owning subchannel.
|
@@ -104,7 +106,6 @@ class SubchannelCall final {
|
|
104
106
|
gpr_cycle_counter start_time;
|
105
107
|
Timestamp deadline;
|
106
108
|
Arena* arena;
|
107
|
-
grpc_call_context_element* context;
|
108
109
|
CallCombiner* call_combiner;
|
109
110
|
};
|
110
111
|
static RefCountedPtr<SubchannelCall> Create(Args args,
|
@@ -243,6 +244,12 @@ class Subchannel final : public DualRefCounted<Subchannel> {
|
|
243
244
|
return connected_subchannel_;
|
244
245
|
}
|
245
246
|
|
247
|
+
RefCountedPtr<UnstartedCallDestination> call_destination() {
|
248
|
+
MutexLock lock(&mu_);
|
249
|
+
if (connected_subchannel_ == nullptr) return nullptr;
|
250
|
+
return connected_subchannel_->unstarted_call_destination();
|
251
|
+
}
|
252
|
+
|
246
253
|
// Attempt to connect to the backend. Has no effect if already connected.
|
247
254
|
void RequestConnection() ABSL_LOCKS_EXCLUDED(mu_);
|
248
255
|
|
@@ -272,6 +279,12 @@ class Subchannel final : public DualRefCounted<Subchannel> {
|
|
272
279
|
return event_engine_;
|
273
280
|
}
|
274
281
|
|
282
|
+
// Exposed for testing purposes only.
|
283
|
+
static ChannelArgs MakeSubchannelArgs(
|
284
|
+
const ChannelArgs& channel_args, const ChannelArgs& address_args,
|
285
|
+
const RefCountedPtr<SubchannelPoolInterface>& subchannel_pool,
|
286
|
+
const std::string& channel_default_authority);
|
287
|
+
|
275
288
|
private:
|
276
289
|
// Tears down any existing connection, and arranges for destruction
|
277
290
|
void Orphaned() override ABSL_LOCKS_EXCLUDED(mu_);
|
@@ -27,17 +27,15 @@
|
|
27
27
|
|
28
28
|
#include "src/core/lib/channel/channel_args.h"
|
29
29
|
#include "src/core/lib/debug/trace.h"
|
30
|
-
#include "src/core/lib/gpr/useful.h"
|
31
30
|
#include "src/core/lib/gprpp/ref_counted.h"
|
32
31
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
33
32
|
#include "src/core/lib/iomgr/resolved_address.h"
|
33
|
+
#include "src/core/util/useful.h"
|
34
34
|
|
35
35
|
namespace grpc_core {
|
36
36
|
|
37
37
|
class Subchannel;
|
38
38
|
|
39
|
-
extern TraceFlag grpc_subchannel_pool_trace;
|
40
|
-
|
41
39
|
// A key that can uniquely identify a subchannel.
|
42
40
|
class SubchannelKey final {
|
43
41
|
public:
|
@@ -68,7 +66,7 @@ class SubchannelKey final {
|
|
68
66
|
class SubchannelPoolInterface : public RefCounted<SubchannelPoolInterface> {
|
69
67
|
public:
|
70
68
|
SubchannelPoolInterface()
|
71
|
-
: RefCounted(GRPC_TRACE_FLAG_ENABLED(
|
69
|
+
: RefCounted(GRPC_TRACE_FLAG_ENABLED(subchannel_pool)
|
72
70
|
? "SubchannelPoolInterface"
|
73
71
|
: nullptr) {}
|
74
72
|
~SubchannelPoolInterface() override {}
|